﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see license.txt or http://cksource.com/ckfinder/license
 */

(function () {
    var a = (function () {
        var h = {
            jY: 'G9AD', _: {}, status: 'unloaded', basePath: (function () {
                var k = window.CKFINDER_BASEPATH || '';
                if (!k) {
                    var l = document.getElementsByTagName('script');
                    for (var m = 0; m < l.length; m++) {
                        var n = l[m].src.match(/(^|.*[\\\/])CKFINDER(?:_basic)?(?:_v2)?(?:_source)?.js(?:\?.*)?$/i);
                        if (n) {
                            k = n[1];
                            break;
                        }
                    }
                }
                if (k.indexOf('://') == -1)if (k.indexOf('/') === 0) k = location.href.match(/^.*?:\/\/[^\/]*/)[0] + k; else k = location.href.match(/^[^\?]*\/(?:)/)[0] + k;
                return k;
            })(), getUrl: function (k) {
                if (k.indexOf('://') == -1 && k.indexOf('/') !== 0) k = this.basePath + k;
                if (this.jY && k.charAt(k.length - 1) != '/') k += (k.indexOf('?') >= 0 ? '&' : '?') + 't=' + this.jY;
                return k;
            }
        }, i = window.CKFINDER_GETURL;
        if (i) {
            var j = h.getUrl;
            h.getUrl = function (k) {
                return i.call(h, k) || j.call(h, k);
            };
        }
        return h;
    })();

    function b(h) {
        return a.instances[h];
    };
    var c = {callback: 1, selectThumbnailActionFunction: 1, selectActionFunction: 1};
    a.jd = function () {
        var j = this;
        var h = {};
        for (var i in j) {
            if (!j.hasOwnProperty(i))continue;
            if (typeof j[i] == 'function' && !c[i] || typeof j[i] == 'undefined')continue;
            h[i] = j[i];
        }
        if (j.callback) h.callback = j.callback;
        return h;
    };
    a.lj = function (h) {
        var k = this;
        h = h || k.basePath;
        var i = '';
        if (!h || h.length === 0) h = CKFinder.DEFAULT_basePath;
        if (h.substr(h.length - 1, 1) != '/') h += '/';
        h += 'ckfinder.html';
        var j;
        if (k.hh) {
            j = k.hh;
            if (typeof j == 'function') j = j.toString().match(/function ([^(]+)/)[1];
            i += '?action=js&amp;func=' + j;
        }
        if (k.jx) {
            i += i ? '&amp;' : '?';
            i += 'data=' + encodeURIComponent(k.jx);
        }
        if (k.disableThumbnailSelection) {
            i += i ? '&amp;' : '?';
            i += 'dts=1';
        } else if (k.lH || k.hh) {
            j = k.lH || k.hh;
            if (typeof j == 'function') j = j.toString().match(/function ([^(]+)/)[1];
            i += i ? '&amp;' : '?';
            i += 'thumbFunc=' + j;
            if (k.nm) i += '&amp;tdata=' + encodeURIComponent(k.nm); else if (!k.lH && k.jx) i += '&amp;tdata=' + encodeURIComponent(k.jx);
        }
        if (k.startupPath) {
            i += i ? '&amp;' : '?';
            i += 'start=' + encodeURIComponent(k.startupPath + (k.startupFolderExpanded ? ':1' : ':0'));
        }
        if (k.rememberLastFolder !== undefined && !k.rememberLastFolder) {
            i += i ? '&amp;' : '?';
            i += 'rlf=0';
        }
        if (k.id) {
            i += i ? '&amp;' : '?';
            i += 'id=' + encodeURIComponent(k.id);
        }
        if (k.skin) {
            i += i ? '&amp;' : '?';
            i += 'skin=' + encodeURIComponent(k.skin);
        }
        return h + i;
    };
    function d(h) {
        var k = this;
        k.id = h.name;
        var i = h.element.getDocument().getWindow().$, j = a.oC.getWindow().$;
        k.inPopup = !!(i && i.opener);
        k.inIframe = !k.inPopup && i != j.top && i.frameElement.nodeName.toLowerCase() == 'iframe';
        k.inFrame = !k.inPopup && i != j.top && i.frameElement.nodeName.toLowerCase() == 'frame';
        k.inUrlPopup = !!(k.inPopup && j.opener);
    };
    function e(h, i, j) {
        i.on('appReady', function (k) {
            k.removeListener();
            h.document = i.document.$;
            h.folders = i.folders;
            h.files = i.ld['filesview.filesview'].data().files;
            h.basketFiles = i.basketFiles;
            h.resourceTypes = i.resourceTypes;
            h.connector = i.connector;
            h.lang = i.lang;
            h.langCode = i.langCode;
            h.config = i.config;
            i.ld['foldertree.foldertree'].on('afterAddFolder', function (l) {
                l.removeListener();
                if (j) j(h);
            }, h);
        }, h, null, 999);
    };
    d.prototype = {
        _: {}, addFileContextMenuOption: function (h, i, j) {
            var k = b(this.id), l = 'FileContextMenu_' + h.command;
            k.bD(l, {
                exec: function (m) {
                    var n = m.ld['filesview.filesview'].tools.dH();
                    i(m.cg, n);
                }
            });
            h.command = l;
            if (!h.group) h.group = 'file1';
            k.gp(l, h);
            k.ld['filesview.filesview'].on('beforeContextMenu', function o(m) {
                if (j) {
                    var n = j(this.tools.dH());
                    if (n) m.data.bj[l] = n == -1 ? a.aY : a.aS;
                } else m.data.bj[l] = a.aS;
            });
        }, disableFileContextMenuOption: function (h, i) {
            var j = b(this.id), k = i ? 'FileContextMenu_' + h : h, l = function n(m) {
                delete m.data.bj[k];
            };
            j.ld['filesview.filesview'].on('beforeContextMenu', l);
            return function () {
                j.ld['filesview.filesview'].removeListener('beforeContextMenu', l);
            };
        }, addFolderContextMenuOption: function (h, i, j) {
            var k = b(this.id), l = 'FolderContextMenu_' + h.command;
            k.bD(l, {
                exec: function (m) {
                    i(m.cg, m.aV);
                }
            });
            h.command = l;
            if (!h.group) h.group = 'folder1';
            k.gp(l, h);
            k.ld['foldertree.foldertree'].on('beforeContextMenu', function o(m) {
                if (j) {
                    var n = j(this.app.aV);
                    if (n) m.data.bj[l] = n == -1 ? a.aY : a.aS;
                } else m.data.bj[l] = a.aS;
            });
        }, disableFolderContextMenuOption: function (h, i) {
            var j = b(this.id), k = i ? 'FolderContextMenu_' + h : h, l = function n(m) {
                delete m.data.bj[k];
            };
            j.ld['foldertree.foldertree'].on('beforeContextMenu', l);
            return function () {
                j.ld['foldertree.foldertree'].removeListener('beforeContextMenu', l);
            };
        }, addFolderDropMenuOption: function (h, i, j) {
            var k = b(this.id), l = 'FolderDropMenu_' + h.command;
            k.bD(l, {
                exec: function (n) {
                    i(n.cg, n.cK.oa());
                }
            });
            h.command = l;
            var m = new a.iD(k, l, h);
            k.ld['foldertree.foldertree'].on('beforeDropMenu', function o(n) {
                if (j ? j.call(k.cg, n.data.folder) : 1) n.data.iG[l] = m;
            });
        }, disableFolderDropMenuOption: function (h, i) {
            var j = b(this.id), k = i ? 'FolderDropMenu_' + h : h, l = function n(m) {
                delete m.data.iG[k];
            };
            j.ld['foldertree.foldertree'].on('beforeDropMenu', l);
            return function () {
                j.ld['foldertree.foldertree'].removeListener('beforeDropMenu', l);
            };
        }, getSelectedFile: function () {
            return b(this.id).ld['filesview.filesview'].tools.dH();
        }, getSelectedFiles: function () {
            return b(this.id).ld['filesview.filesview'].tools.oO(true);
        }, getSelectedFolder: function () {
            return b(this.id).aV;
        }, filterFiles: function (h) {
            b(this.id).ld['filesview.filesview'].oW('requestRenderFiles', {lookup: h});
        }, setUiColor: function (h) {
            return b(this.id).setUiColor(h);
        }, destroy: function (h) {
            b(this.id).destroy();
            h && h();
        }, openDialog: function (h, i) {
            var l = this;
            var j = new a.dom.document(window.document).getHead(), k = b(l.id).document.getWindow();
            if (l.inFrame || l.inPopup || l.inIframe) a.document = b(l.id).document;
            return b(l.id).openDialog(h, i, j);
        }, openMsgDialog: function (h, i) {
            b(this.id).msgDialog(h, i);
        }, openConfirmDialog: function (h, i, j) {
            b(this.id).fe(h, i, j);
        }, openInputDialog: function (h, i, j, k) {
            b(this.id).hs(h, i, j, k);
        }, openSkippedFilesDialog: function (h, i, j, k) {
            b(this.id).skippedFilesDialog(h, i, j, k);
        }, addTool: function (h) {
            return b(this.id).plugins.tools.addTool(h);
        }, addToolPanel: function (h) {
            return b(this.id).plugins.tools.addToolPanel(h);
        }, removeTool: function (h) {
            b(this.id).plugins.tools.removeTool(h);
        }, showTool: function (h) {
            b(this.id).plugins.tools.showTool(h);
        }, hideTool: function (h) {
            b(this.id).plugins.tools.hideTool(h);
        }, getResourceType: function (h) {
            return b(this.id).getResourceType(h);
        }, log: function (h) {
            a.log.apply(a.log, arguments);
        }, getLog: function () {
            return a.mZ();
        }, emptyBasket: function () {
            b(this.id).execCommand('TruncateBasket');
        }, replaceUploadForm: function (h, i, j, k) {
            var l = b(this.id);
            if (!k) k = 10;
            if (k >= (l.dC || 20))return;
            l.dC = k;
            l.ld['formpanel.formpanel'].on('beforeUploadFileForm', function (m) {
                if (m.data.step != 2)return;
                if (k > l.dC)return;
                m.cancel(true);
                var n = this.data(), o = m.data.folder;
                try {
                    if (n.dc == 'upload') this.oW('requestUnloadForm', function () {
                        this.app.cS('upload').bR(a.aS);
                    }); else {
                        if (this.data().dc) this.oW('requestUnloadForm');
                        if (!j) this.eh.removeClass('show_border');
                        this.oW('requestLoadForm', {html: h, command: 'upload'});
                        i && i();
                    }
                } catch (p) {
                    this.oW('failedUploadFileForm', m.data);
                    this.oW('afterUploadFileForm', m.data);
                    throw a.ba(p);
                }
            });
            return {
                hide: function () {
                    l.oW('requestUnloadForm', function () {
                        l.cS('upload').bR(a.aS);
                    });
                }
            };
        }, resizeFormPanel: function (h) {
            var i = b(this.id);
            if (typeof h == 'undefined') {
                i.document.getById('panel_view').setStyle('height', '');
                i.document.getById('panel_widget').setStyle('height', '');
            } else {
                var j = Math.min(h, Math.max(90, i.document.getById('main_container').$.offsetHeight - 300));
                i.document.getById('panel_view').setStyle('height', j + 'px');
                i.document.getById('panel_widget').setStyle('height', j - 3 + 'px');
            }
            i.layout.ea(true);
        }, refreshOpenedFolder: function () {
            var h = b(this.id), i = h.ld['filesview.filesview'].tools.currentFolder();
            h.oW('requestSelectFolder', {folder: i});
        }, selectFile: function (h) {
            var i = b(this.id);
            i.oW('requestSelectFile', {file: h, scrollTo: 1});
        }, closePopup: function () {
            if (!this.inPopup)return;
            b(this.id).element.getDocument().getWindow().$.close();
        }, openFolder: function (h, i) {
            var j = b(this.id);
            i = i.replace(/\/$/, '');
            h = h.toLowerCase();
            for (var k = 0; k < j.folders.length; k++) {
                var l = j.folders[k];
                if (l.getPath().replace(/\/$/, '') == i && h == l.type.toLowerCase()) {
                    j.oW('requestSelectFolder', {folder: l});
                    j.oW('requestShowFolderFiles', {folder: l});
                    return;
                }
            }
        }, setUiColor: function (h) {
            b(this.id).setUiColor(h);
        }, execCommand: function (h) {
            b(this.id).execCommand(h);
        }
    };
    (function () {
        function h(j, k) {
            if (!j.toolbarButtons)return;
            for (var l = 0; l < j.toolbarButtons.length; l++) {
                var m = j.toolbarButtons[l];
                if (k.bY._.items[m[0]])continue;
                var n = a.tools.deepCopy(m[1]), o = n.command;
                if (!n.command) {
                    var p = m[1].onClick;
                    o = 'ToolbarButton_' + m[0];
                    k.bD(o, {
                        exec: function (r) {
                            p(r.cg);
                        }
                    });
                    n.command = o;
                }
                var q = a.tools.capitalize(j.name);
                if (typeof n.label == 'function') n.label = n.label.call(j, k.cg); else if (k.lang[j.name] && k.lang[j.name][n.label]) n.label = k.lang[j.name][n.label]; else if (k.lang[q] && k.lang[q][n.label]) n.label = k.lang[q][n.label]; else if (k.lang[n.label]) n.label = k.lang[n.label];
                k.bY.add(m[0], CKFinder._.UI_BUTTON, n);
            }
        };
        window.CKFinder = function (j, k) {
            if (j)for (var l in j) {
                if (!j.hasOwnProperty(l))continue;
                if (typeof j[l] == 'function' && l != 'callback')continue;
                this[l] = j[l];
            }
            this.callback = k;
        };
        function i(j) {
            var k = 1;
            while (CKFinder._.instanceConfig[k])k++;
            CKFinder._.instanceConfig[k] = j;
            return k;
        };
        CKFinder.prototype = {
            create: function (j) {
                var k = 'ckf' + Math.random().toString().substr(2, 9);
                document.write('<span id="' + k + '"></span>');
                j = a.tools.extend(a.jd.call(this), j, true);
                var l = a.replace(k, j, CKFinder);
                this.api = l.cg;
                return l.cg;
            }, appendTo: function (j, k) {
                k = a.tools.extend(a.jd.call(this), k, true);
                var l = a.appendTo(j, k, CKFinder);
                this.api = l.cg;
                return l.cg;
            }, replace: function (j, k) {
                k = a.tools.extend(a.jd.call(this), k, true);
                var l = a.replace(j, k, CKFinder);
                this.api = l.cg;
                return l.cg;
            }, popup: function (j, k) {
                var l;
                if (j !== null && typeof j === 'object') {
                    l = j;
                    j = parseInt(l.width, 10);
                    k = parseInt(l.height, 10);
                }
                j = j || '80%';
                k = k || '70%';
                if (typeof j == 'string' && j.length > 1 && j.substr(j.length - 1, 1) == '%') j = parseInt(window.screen.width * parseInt(j, 10) / 100, 10);
                if (typeof k == 'string' && k.length > 1 && k.substr(k.length - 1, 1) == '%') k = parseInt(window.screen.height * parseInt(k, 10) / 100, 10);
                if (j < 200) j = 200;
                if (k < 200) k = 200;
                var m = parseInt((window.screen.height - k) / 2, 10), n = parseInt((window.screen.width - j) / 2, 10), o = (l && l.popupFeatures ? l.popupFeatures : CKFinder.config.popupFeatures) + ',width=' + j + ',height=' + k + ',top=' + m + ',left=' + n, p = a.env.webkit ? 'about:blank' : '', q = window.open(p, 'CKFinderpopup', o, true);
                if (!q)return false;
                this.width = this.height = '100%';
                var r = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>' + (l && l.popupTitle ? l.popupTitle : CKFinder.config.popupTitle) + '</title>' + '<style type="text/css">' + 'body, html, iframe, #ckfinder { margin: 0; padding: 0; border: 0; width: 100%; height: 100%; overflow: hidden; }' + '</style>' + '</head>' + '<body></body>' + '</html>', s = this;

                function t() {
                    var u = new a.dom.document(q.document);
                    u.$.open();
                    if (a.env.isCustomDomain()) u.$.domain = window.document.domain;
                    u.$.write(r);
                    u.$.close();
                    try {
                        var v = navigator.userAgent.toLowerCase();
                        if (v.indexOf(' chrome/') == -1) {
                            q.moveTo(n, m);
                            q.resizeTo(j, k);
                        }
                        q.focus();
                        return s.appendTo(u.bH());
                    } catch (w) {
                        return s.appendTo(u.bH());
                    }
                    return false;
                };
                if (CKFinder.env.safari) {
                    setTimeout(t, 0);
                    return null;
                }
                return t();
            }
        };
        CKFinder._ = {};
        CKFinder._.instanceConfig = [];
        CKFinder.lang = {};
        CKFinder.version = '2.6.2';
        CKFinder.revision = 'UNKNOWN';
        CKFinder.addPlugin = function (j, k, l) {
            var m = {bM: l || []};
            if (typeof k == 'function') k = {appReady: k};
            for (var n in k) {
                if (!k.hasOwnProperty(n))continue;
                if (n != 'connectorInitialized' && n != 'uiReady') m[n] = k[n];
            }
            m.bz = function (o) {
                if (o.config.readOnly && m.readOnly === false)return null;
                if (k.connectorInitialized) o.on('connectorInitialized', function (p) {
                    var q = k.connectorInitialized;
                    if (q) q.call(q, o.cg, p.data.xml);
                }, null, null, 1000);
                if (k.connectorResponse) o.on('connectorResponse', function (p) {
                    var q = k.connectorResponse;
                    if (q) q.call(q, o.cg, p.data.xml);
                });
                if (k.galleryCallback) o.on('launchGallery', function (p) {
                    var q = k.galleryCallback;
                    if (q) p.data.bx = q.call(q, o.cg, p.data.selected, p.data.files);
                });
                if (k.uiReady) o.on('uiReady', function () {
                    var p = k.uiReady;
                    p.call(p, o.cg);
                }, null, null, 1000);
                if (k.appReady) o.on('appReady', function () {
                    var p = k.appReady;
                    p.call(p, o.cg);
                }, null, null, 1000);
                h(m, o);
            };
            a.plugins.add(j, m);
        };
        CKFinder.getPluginPath = function (j) {
            return a.plugins.getPath(j);
        };
        CKFinder.addExternalPlugin = function (j, k, l) {
            a.plugins.tR(j, k, l);
        };
        CKFinder.setPluginLang = function (j, k, l) {
            a.plugins.rX(j, k, l);
        };
        CKFinder.dialog = {
            add: function (j, k) {
                if (typeof k == 'function') k = a.tools.override(k, function (l) {
                    return function (m) {
                        return l(m.cg);
                    };
                });
                a.dialog.add(j, k);
            }
        };
        CKFinder.tools = {};
        CKFinder.env = {};
        CKFinder.dom = {};
        CKFinder.create = function (j, k, l, m, n) {
            var o;
            if (j !== null && typeof j === 'object') {
                o = new CKFinder();
                for (var p in j)o[p] = j[p];
            } else {
                o = new CKFinder();
                o.basePath = j;
                if (k) o.width = k;
                if (l) o.height = k;
                if (m) o.selectActionFunction = m;
                if (n) o.callback = n;
            }
            return o.create();
        };
        CKFinder.popup = function (j, k, l, m, n) {
            var o, p, q;
            if (j !== null && typeof j === 'object') {
                o = new CKFinder();
                for (var r in j)o[r] = j[r];
                p = j.popupTitle;
                q = j.popupFeatures;
                if (!k) k = j.width;
                if (!l) l = j.height;
            } else {
                o = new CKFinder();
                o.basePath = j;
                if (m) o.selectActionFunction = m;
                if (n) o.callback = n;
            }
            return o.popup({width: k, height: l, popupTitle: p, popupFeatures: q});
        };
        CKFinder.setupFCKeditor = function (j, k, l, m) {
            var n, o;
            if (k !== null && typeof k === 'object') {
                o = i(k);
                n = new CKFinder();
                for (var p in k) {
                    n[p] = k[p];
                    if (p == 'width') {
                        var q = n[p] || 800;
                        if (typeof q == 'string' && q.length > 1 && q.substr(q.length - 1, 1) == '%') q = parseInt(window.screen.width * parseInt(q, 10) / 100, 10);
                        j.Config.LinkBrowserWindowWidth = q;
                        j.Config.ImageBrowserWindowWidth = q;
                        j.Config.FlashBrowserWindowWidth = q;
                    } else if (p == 'height') {
                        var r = n[p] || 600;
                        if (typeof r == 'string' && r.length > 1 && r.substr(r.length - 1, 1) == '%') r = parseInt(window.screen.height * parseInt(r, 10) / 100, 10);
                        j.Config.LinkBrowserWindowHeight = r;
                        j.Config.ImageBrowserWindowHeight = r;
                        j.Config.FlashBrowserWindowHeight = r;
                    }
                }
            } else {
                n = new CKFinder();
                n.basePath = k;
            }
            var s = n.basePath;
            if (s.substr(0, 1) != '/' && s.indexOf('://') == -1) s = document.location.pathname.substring(0, document.location.pathname.lastIndexOf('/') + 1) + s;
            s = a.lj.call(n, s);
            var t = s.indexOf('?') !== -1 ? '&' : '?';
            if (o) {
                s += t + 'configId=' + o;
                t = '&';
            }
            j.Config.LinkBrowserURL = s;
            j.Config.ImageBrowserURL = s + t + 'type=' + (l || 'Images');
            j.Config.FlashBrowserURL = s + t + 'type=' + (m || 'Flash');
            var u = s.substring(0, 1 + s.lastIndexOf('/'));
            j.Config.LinkUploadURL = u + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=Files';
            j.Config.ImageUploadURL = u + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (l || 'Images');
            j.Config.FlashUploadURL = u + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (m || 'Flash');
        };
        CKFinder.setupCKEditor = function (j, k, l, m) {
            if (j === null) {
                for (var n in CKEDITOR.instances)CKFinder.setupCKEditor(CKEDITOR.instances[n], k, l, m);
                CKEDITOR.on('instanceCreated', function (w) {
                    CKFinder.setupCKEditor(w.editor, k, l, m);
                });
                return;
            }
            var o, p;
            if (k !== null && typeof k === 'object') {
                p = i(k);
                o = new CKFinder();
                for (var q in k) {
                    o[q] = k[q];
                    if (q == 'width') {
                        var r = o[q] || 800;
                        if (typeof r == 'string' && r.length > 1 && r.substr(r.length - 1, 1) == '%') r = parseInt(window.screen.width * parseInt(r, 10) / 100, 10);
                        j.config.filebrowserWindowWidth = r;
                    } else if (q == 'height') {
                        var s = o[q] || 600;
                        if (typeof s == 'string' && s.length > 1 && s.substr(s.length - 1, 1) == '%') s = parseInt(window.screen.height * parseInt(s, 10) / 100, 10);
                        j.config.filebrowserWindowHeight = s;
                    }
                }
            } else {
                o = new CKFinder();
                o.basePath = k;
            }
            var t = o.basePath;
            if (t.substr(0, 1) != '/' && t.indexOf('://') == -1) t = document.location.pathname.substring(0, document.location.pathname.lastIndexOf('/') + 1) + t;
            t = a.lj.call(o, t);
            var u = t.indexOf('?') !== -1 ? '&' : '?';
            if (p) {
                t += u + 'configId=' + p;
                u = '&';
            }
            j.config.filebrowserBrowseUrl = t;
            j.config.filebrowserImageBrowseUrl = t + u + 'type=' + (l || 'Images');
            j.config.filebrowserFlashBrowseUrl = t + u + 'type=' + (m || 'Flash');
            var v = t.substring(0, 1 + t.lastIndexOf('/'));
            j.config.filebrowserUploadUrl = v + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=Files';
            j.config.filebrowserImageUploadUrl = v + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (l || 'Images');
            j.config.filebrowserFlashUploadUrl = v + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (m || 'Flash');
        };
    })();
    if (!a.event) {
        a.event = function () {
        };
        a.event.du = function (h, i) {
            var j = a.event.prototype;
            for (var k in j) {
                if (h[k] == undefined) h[k] = j[k];
            }
        };
        a.event.prototype = (function () {
            var h = function (j) {
                var k = j.kk && j.kk() || j._ || (j._ = {});
                return k.cC || (k.cC = {});
            }, i = function (j) {
                this.name = j;
                this.dF = [];
            };
            i.prototype = {
                mi: function (j) {
                    for (var k = 0, l = this.dF; k < l.length; k++) {
                        if (l[k].fn == j)return k;
                    }
                    return -1;
                }
            };
            return {
                on: function (j, k, l, m, n) {
                    var o = h(this), p = o[j] || (o[j] = new i(j));
                    if (p.mi(k) < 0) {
                        var q = p.dF;
                        if (!l) l = this;
                        if (isNaN(n)) n = 10;
                        var r = this, s = function (u, v, w, x) {
                            var y = {
                                name: j,
                                jN: this,
                                application: u,
                                data: v,
                                jO: m,
                                stop: w,
                                cancel: x,
                                removeListener: function () {
                                    r.removeListener(j, k);
                                }
                            };
                            k.call(l, y);
                            return y.data;
                        };
                        s.fn = k;
                        s.nT = n;
                        for (var t = q.length - 1; t >= 0; t--) {
                            if (q[t].nT <= n) {
                                q.splice(t + 1, 0, s);
                                return;
                            }
                        }
                        q.unshift(s);
                    }
                }, oW: (function () {
                    var j = false, k = function () {
                        j = true;
                    }, l = false, m = function (n) {
                        l = n ? 2 : true;
                    };
                    return function y(n, o, p, q) {
                        if (typeof o == 'function') {
                            q = o;
                            o = null;
                        } else if (typeof p == 'function') {
                            q = p;
                            p = null;
                        }
                        if (n != 'mousemove') a.log('[EVENT] ' + n, o, q);
                        var r = h(this)[n], s = j, t = l;
                        j = l = false;
                        if (r) {
                            var u = r.dF;
                            if (u.length) {
                                u = u.slice(0);
                                for (var v = 0; v < u.length; v++) {
                                    var w = u[v].call(this, p, o, k, m);
                                    if (typeof w != 'undefined') o = w;
                                    if (j || l && l != 2)break;
                                }
                            }
                        }
                        var x = l || (typeof o == 'undefined' ? false : !o || typeof o.result == 'undefined' ? o : o.result);
                        if (typeof q === 'function' && l != 2) x = q.call(this, l, o) || x;
                        j = s;
                        l = t;
                        return x;
                    };
                })(), cr: function (j, k, l) {
                    var m = this.oW(j, k, l);
                    delete h(this)[j];
                    return m;
                }, removeListener: function (j, k) {
                    var l = h(this)[j];
                    if (l) {
                        var m = l.mi(k);
                        if (m >= 0) l.dF.splice(m, 1);
                    }
                }, mF: function () {
                    var j = h(this);
                    for (var k = 0; k < j.length; k++)j[k].dF = [];
                }, rC: function (j) {
                    var k = h(this)[j];
                    return k && k.dF.length > 0;
                }
            };
        })();
    }
    if (!a.application) {
        a.kZ = 0;
        a.fc = 1;
        a.qE = 2;
        a.application = function (h, i, j, k) {
            var l = this;
            l._ = {instanceConfig: h, element: i};
            l.ff = j || a.kZ;
            a.event.call(l);
            l.iI(k);
        };
        a.application.replace = function (h, i, j) {
            var k = h;
            if (typeof k != 'object') {
                k = document.getElementById(h);
                if (!k) {
                    var l = 0, m = document.getElementsByName(h);
                    while ((k = m[l++]) && k.tagName.toLowerCase() != 'textarea') {
                    }
                }
                if (!k)throw '[CKFINDER.application.replace] The element with id or name "' + h + '" was not found.';
            }
            return new a.application(i, k, a.fc, j);
        };
        a.application.appendTo = function (h, i, j) {
            if (typeof h != 'object') {
                h = document.getElementById(h);
                if (!h)throw '[CKFINDER.application.appendTo] The element with id "' + h + '" was not found.';
            }
            return new a.application(i, h, a.qE, j);
        };
        a.application.prototype = {
            iI: function () {
                var h = a.application.eb || (a.application.eb = []);
                h.push(this);
            }, oW: function (h, i, j) {
                return a.event.prototype.oW.call(this, h, i, this, j);
            }, cr: function (h, i, j) {
                return a.event.prototype.cr.call(this, h, i, this, j);
            }
        };
        a.event.du(a.application.prototype, true);
    }
    if (!a.env) {
        var f = /rv:([\d\.]+)/, g = /trident\/([\d]+)/;
        a.env = (function () {
            var h = navigator.userAgent.toLowerCase(), i = window.opera, j = {
                ie: /*@cc_on!@*/false,
                iemodern: false,
                opera: !!i && i.version,
                webkit: h.indexOf(' applewebkit/') > -1,
                air: h.indexOf(' adobeair/') > -1,
                mac: h.indexOf('macintosh') > -1,
                quirks: document.compatMode == 'BackCompat',
                isCustomDomain: function () {
                    return this.ie && document.domain != window.location.hostname;
                }
            };
            j.gecko = navigator.product == 'Gecko' && !j.webkit && !j.opera;
            j.chrome = false;
            j.safari = false;
            if (j.webkit)if (h.indexOf(' chrome/') > -1) j.chrome = true; else j.safari = true;
            var k = 0;
            if (j.ie) {
                k = parseFloat(h.match(/msie (\d+)/)[1]);
                j.ie8 = !!document.documentMode;
                j.ie8Compat = document.documentMode == 8;
                j.ie7Compat = k == 7 && !document.documentMode || document.documentMode == 7;
                j.ie6Compat = k < 7 || j.quirks;
            }
            if (j.gecko) {
                var l = h.match(f);
                if (l) {
                    l = l[1].split('.');
                    k = l[0] * 10000 + (l[1] || 0) * 100 + +(l[2] || 0);
                }
                if (g.test(h)) {
                    j.gecko = false;
                    j.iemodern = true;
                } else j.isMobile = h.indexOf('fennec') > -1;
            }
            if (j.opera) {
                k = parseFloat(i.version());
                j.isMobile = h.indexOf('opera mobi') > -1;
            }
            if (j.air) k = parseFloat(h.match(/ adobeair\/(\d+)/)[1]);
            if (j.webkit) {
                k = parseFloat(h.match(/ applewebkit\/(\d+)/)[1]);
                j.isMobile = h.indexOf('mobile') > -1;
            }
            j.version = k;
            j.isCompatible = j.ie && k >= 6 || j.iemodern && k >= 11 || j.gecko && k >= 10801 || j.opera && k >= 9.5 || j.air && k >= 1 || j.webkit && k >= 522 || false;
            j.cssClass = 'browser_' + (j.ie ? 'ie' : j.iemodern ? 'iemodern' : j.gecko ? 'gecko' : j.opera ? 'opera' : j.air ? 'air' : j.webkit ? 'webkit' : 'unknown');
            if (j.quirks) j.cssClass += ' browser_quirks';
            if (j.ie) {
                j.cssClass += ' browser_ie' + (j.version < 7 ? '6' : j.version >= 8 ? '8' : '7');
                if (j.quirks) j.cssClass += ' browser_iequirks';
                if (j.ie7Compat) j.cssClass += ' browser_ie7Compat';
            }
            if (j.gecko && k < 10900) j.cssClass += ' browser_gecko18';
            return j;
        })();
        CKFinder.env = a.env;
    }
    var h = a.env;
    var i = h.ie;
    if (a.status == 'unloaded') (function () {
        a.event.du(a);
        a.dO = function () {
            if (a.status != 'basic_ready') {
                a.dO.qr = true;
                return;
            }
            delete a.dO;
            var k = document.createElement('script');
            k.type = 'text/javascript';
            k.src = a.basePath + 'ckfinder.js';
            document.getElementsByTagName('head')[0].appendChild(k);
        };
        a.mS = 0;
        a.uQ = 'ckfinder';
        a.uM = true;
        var j = function (k, l, m, n) {
            if (h.isCompatible) {
                if (a.dO) a.dO();
                var o = m(k, l, n);
                a.add(o);
                return o;
            }
            return null;
        };
        a.replace = function (k, l, m) {
            return j(k, l, a.application.replace, m);
        };
        a.appendTo = function (k, l, m) {
            return j(k, l, a.application.appendTo, m);
        };
        a.add = function (k) {
            var l = this._.io || (this._.io = []);
            l.push(k);
        };
        a.uL = function () {
            var k = document.getElementsByTagName('textarea');
            for (var l = 0; l < k.length; l++) {
                var m = null, n = k[l], o = n.name;
                if (!n.name && !n.id)continue;
                if (typeof arguments[0] == 'string') {
                    var p = new RegExp('(?:^| )' + arguments[0] + '(?:$| )');
                    if (!p.test(n.className))continue;
                } else if (typeof arguments[0] == 'function') {
                    m = {};
                    if (arguments[0](n, m) === false)continue;
                }
                this.replace(n, m);
            }
        };
        (function () {
            var k = function () {
                var l = a.dO, m = a.mS;
                a.status = 'basic_ready';
                if (l && l.qr) l(); else if (m) setTimeout(function () {
                    if (a.dO) a.dO();
                }, m * 1000);
            };
            if (window.addEventListener) window.addEventListener('load', k, false); else if (window.attachEvent) window.attachEvent('onload', k);
        })();
        a.status = 'basic_loaded';
    })();
    a.dom = {};
    CKFinder.dom = a.dom;
    var j = a.dom;
    a.ajax = (function () {
        var k = function () {
            if (!i || location.protocol != 'file:')try {
                return new XMLHttpRequest();
            } catch (p) {
            }
            try {
                return new ActiveXObject('Msxml2.XMLHTTP');
            } catch (q) {
            }
            try {
                return new ActiveXObject('Microsoft.XMLHTTP');
            } catch (r) {
            }
            return null;
        }, l = function (p) {
            return p.readyState == 4 && (p.status >= 200 && p.status < 300 || p.status == 304 || p.status === 0 || p.status == 1223);
        }, m = function (p) {
            if (l(p))return p.responseText;
            return null;
        }, n = function (p) {
            if (l(p)) {
                var q = p.responseXML, r = new a.xml(q && q.firstChild && q.documentElement && q.documentElement.nodeName != 'parsererror' ? q : p.responseText.replace(/^[^<]+/, '').replace(/[^>]+$/, ''));
                if (r && r.mq && r.mq.documentElement && r.mq.documentElement.nodeName != 'parsererror' && r.mq.documentElement.nodeName != 'html' && r.mq.documentElement.nodeName != 'br')return r;
            }
            var s = a.nG || a.jt, t = p.responseText, u = s.lang.ErrorMsg[!t ? 'XmlEmpty' : 'XmlError'] + '<br>';
            if (r && r.mq)if (r.mq.parseError && r.mq.parseError.reason) u += r.mq.parseError.reason; else if (r.mq.documentElement && r.mq.documentElement.nodeName == 'parsererror') u += r.mq.documentElement.textContent;
            if (!t) s.msgDialog(s.lang.SysErrorDlgTitle, u); else {
                if (/text\/plain/.test(p.getResponseHeader('Content-Type')) || /<Connector\s*/.test(t)) {
                    t = a.tools.htmlEncode(t);
                    t = t.replace(/\n/g, '<br>');
                    t = '<div style="width:600px; overflow:scroll"><font>' + t + '</font></div>';
                }
                s.msgDialog(s.lang.SysErrorDlgTitle, u + '<br>' + s.lang.ErrorMsg.XmlRawResponse.replace('%s', '<br><br>' + t));
            }
            return {};
        }, o = function (p, q, r, s) {
            var t = !!q;
            a.log('[AJAX] ' + (s ? 'POST' : 'GET') + ' ' + p);
            var u = k();
            if (!u)return null;
            if (!s) u.open('GET', p, t); else u.open('POST', p, t);
            if (t) u.onreadystatechange = function () {
                if (u.readyState == 4) {
                    q(r(u));
                    u = null;
                }
            };
            if (s) {
                u.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=utf-8');
                u.send(s);
            } else u.send(null);
            return t ? '' : r(u);
        };
        return {
            load: function (p, q, r) {
                return o(p, q, m, r);
            }, loadXml: function (p, q, r) {
                return o(p, q, n, r);
            }
        };
    })();
    CKFinder.ajax = a.ajax;
    (function () {
        var k = [];
        a.tools = {
            arrayCompare: function (l, m) {
                if (!l && !m)return true;
                if (!l || !m || l.length != m.length)return false;
                for (var n = 0; n < l.length; n++) {
                    if (l[n] != m[n])return false;
                }
                return true;
            }, clone: function (l) {
                var m;
                if (l && l instanceof Array) {
                    m = [];
                    for (var n = 0; n < l.length; n++)m[n] = this.clone(l[n]);
                    return m;
                }
                if (l === null || typeof l != 'object' || l instanceof String || l instanceof Number || l instanceof Boolean || l instanceof Date)return l;
                m = new l.constructor();
                for (var o in l) {
                    var p = l[o];
                    m[o] = this.clone(p);
                }
                return m;
            }, capitalize: function (l) {
                return l.charAt(0).toUpperCase() + l.substring(1).toLowerCase();
            }, extend: function (l) {
                var m = arguments.length, n, o;
                if (typeof(n = arguments[m - 1]) == 'boolean') m--; else if (typeof(n = arguments[m - 2]) == 'boolean') {
                    o = arguments[m - 1];
                    m -= 2;
                }
                for (var p = 1; p < m; p++) {
                    var q = arguments[p];
                    for (var r in q) {
                        if (n === true || l[r] == undefined)if (!o || r in o) l[r] = q[r];
                    }
                }
                return l;
            }, prototypedCopy: function (l) {
                var m = function () {
                };
                m.prototype = l;
                return new m();
            }, isArray: function (l) {
                return !!l && l instanceof Array;
            }, cssStyleToDomStyle: (function () {
                var l = document.createElement('div').style, m = typeof l.cssFloat != 'undefined' ? 'cssFloat' : typeof l.styleFloat != 'undefined' ? 'styleFloat' : 'float';
                return function (n) {
                    if (n == 'float')return m; else return n.replace(/-./g, function (o) {
                        return o.substr(1).toUpperCase();
                    });
                };
            })(), htmlEncode: function (l) {
                var m = function (q) {
                    var r = new j.element('span');
                    r.setText(q);
                    return r.getHtml();
                }, n = m('\n').toLowerCase() == '<br>' ? function (q) {
                        return m(q).replace(/<br>/gi, '\n');
                    } : m, o = m('>') == '>' ? function (q) {
                        return n(q).replace(/>/g, '&gt;');
                    } : n, p = m('  ') == '&nbsp; ' ? function (q) {
                        return o(q).replace(/&nbsp;/g, ' ');
                    } : o;
                this.htmlEncode = p;
                return this.htmlEncode(l);
            }, escapeHtml: function (l) {
                var m = {'&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#039;'};
                return l.replace(/[&<>"']/g, function (n) {
                    return m[n];
                });
            }, getNextNumber: (function () {
                var l = 0;
                return function () {
                    return ++l;
                };
            })(), getRandomString: function (l) {
                var m = 'abcdefghijklmnopqrstuvwxyz0123456789', n = [], o = '';
                if (window.crypto && window.crypto.getRandomValues) {
                    n = new Uint8Array(l);
                    window.crypto.getRandomValues(n);
                } else for (var p = 0; p < l; p++)n.push(Math.floor(Math.random() * 256));
                for (var q = 0; q < n.length; q++) {
                    var r = m.charAt(n[q] % m.length);
                    o += Math.random() > 0.5 ? r.toUpperCase() : r;
                }
                return o;
            }, override: function (l, m) {
                return m(l);
            }, setTimeout: function (l, m, n, o, p) {
                if (!p) p = window;
                if (!n) n = p;
                return p.setTimeout(function () {
                    if (o) l.apply(n, [].concat(o)); else l.apply(n);
                }, m || 0);
            }, trim: (function () {
                var l = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;
                return function (m) {
                    return m ? m.replace(l, '') : null;
                };
            })(), ltrim: (function () {
                var l = /^[ \t\n\r]+/g;
                return function (m) {
                    return m ? m.replace(l, '') : null;
                };
            })(), rtrim: (function () {
                var l = /[ \t\n\r]+$/g;
                return function (m) {
                    return m ? m.replace(l, '') : null;
                };
            })(), indexOf: Array.prototype.indexOf ? function (l, m) {
                    return l.indexOf(m);
                } : function (l, m) {
                    for (var n = 0, o = l.length; n < o; n++) {
                        if (l[n] === m)return n;
                    }
                    return -1;
                }, bind: function (l, m) {
                return function () {
                    return l.apply(m, arguments);
                };
            }, createClass: function (l) {
                var m = l.$, n = l.base, o = l.vd || l._, p = l.ej, q = l.statics;
                if (o) {
                    var r = m;
                    m = function () {
                        var v = this;
                        var s = v._ || (v._ = {});
                        for (var t in o) {
                            var u = o[t];
                            s[t] = typeof u == 'function' ? a.tools.bind(u, v) : u;
                        }
                        r.apply(v, arguments);
                    };
                }
                if (n) {
                    m.prototype = this.prototypedCopy(n.prototype);
                    m.prototype['constructor'] = m;
                    m.prototype.base = function () {
                        this.base = n.prototype.base;
                        n.apply(this, arguments);
                        this.base = arguments.callee;
                    };
                }
                if (p) this.extend(m.prototype, p, true);
                if (q) this.extend(m, q, true);
                return m;
            }, addFunction: function (l, m) {
                return k.push(function () {
                        l.apply(m || this, arguments);
                    }) - 1;
            }, removeFunction: function (l) {
                k[l] = null;
            }, callFunction: function (l) {
                var m = k[l];
                return m.apply(window, Array.prototype.slice.call(arguments, 1));
            }, cssLength: (function () {
                var l = /^\d+(?:\.\d+)?$/;
                return function (m) {
                    return m + (l.test(m) ? 'px' : '');
                };
            })(), repeat: function (l, m) {
                return new Array(m + 1).join(l);
            }, deepCopy: function (l) {
                var m = {};
                if (typeof l == 'object') {
                    if (typeof l.length != 'undefined') m = [];
                    for (var n in l) {
                        if (l[n] === null) m[n] = null; else if (typeof l[n] == 'object') m[n] = a.tools.deepCopy(l[n]); else m[n] = l[n];
                    }
                }
                return m;
            }, getUrlParam: function (l, m) {
                var n = new RegExp('(?:[?&]|&amp;)' + l + '=([^&]+)', 'i'), o = (m || window).location.search.match(n);
                return o && o.length > 1 ? o[1] : null;
            }, htmlEncode: function (l) {
                if (!l)return '';
                l = typeof l != 'string' ? l.toString() : l;
                l = l.replace(/&/g, '&amp;');
                l = l.replace(/</g, '&lt;');
                l = l.replace(/>/g, '&gt;');
                return l;
            }, setCookie: function (l, m, n) {
                document.cookie = l + '=' + m + (!n ? '; expires=Sat, 2 Jan 2038 01:00:00 UTC; path=/' : '');
            }, getCookie: function (l) {
                var m = document.cookie.match(new RegExp('(^|\\s|;)' + l + '=([^;]*)'));
                return m && m.length > 0 ? m[2] : '';
            }, mH: function (l) {
                if (i) {
                    l.$.onfocusin = function () {
                        l.addClass('focus_inside');
                    };
                    l.$.onfocusout = function () {
                        l.removeClass('focus_inside');
                    };
                } else {
                    l.$.addEventListener('focus', function () {
                        l.addClass('focus_inside');
                    }, true);
                    l.$.addEventListener('blur', function () {
                        l.removeClass('focus_inside');
                    }, true);
                }
            }, formatSize: function (l, m, n) {
                if (l == 0)return '0';
                if (l < 1)return m.Kb.replace('%1', 1);
                if (l < 1024) {
                    if (!n) l = l.toFixed(2);
                    return m.Kb.replace('%1', l);
                }
                if (l < 1048576)return m.Mb.replace('%1', (l / 1024).toFixed(2));
                return m.Gb.replace('%1', (l / 1048576).toFixed(2));
            }, formatSpeed: function (l, m) {
                return m.SizePerSecond.replace('%1', this.formatSize(l, m));
            }
        };
        CKFinder._.callFunction = a.tools.callFunction;
        CKFinder.tools = a.tools;
    })();
    var k = a.tools;
    j.event = function (l) {
        this.$ = l;
    };
    j.event.prototype = {
        oV: function () {
            return this.$.keyCode || this.$.which || 0;
        }, db: function () {
            var m = this;
            var l = m.oV();
            if (m.$.ctrlKey || m.$.metaKey) l += a.bP;
            if (m.$.shiftKey) l += a.dy;
            if (m.$.altKey) l += a.eJ;
            return l;
        }, preventDefault: function (l) {
            var m = this.$;
            if (m.preventDefault) m.preventDefault(); else m.returnValue = false;
            if (l) this.stopPropagation();
        }, stopPropagation: function () {
            var l = this.$;
            if (l.stopPropagation) l.stopPropagation(); else l.cancelBubble = true;
        }, bK: function () {
            var l = this.$.target || this.$.srcElement;
            return l ? new j.bi(l) : null;
        }, getButton: function () {
            if (this.$.which)return this.$.which;
            switch (this.$.button) {
                case 1:
                    return 1;
                case 4:
                    return 2;
                case 2:
                    return 3;
            }
        }, ov: function () {
            return 1 == this.getButton();
        }
    };
    a.bP = 1000;
    a.dy = 2000;
    a.eJ = 4000;
    j.dE = function (l) {
        if (l) this.$ = l;
    };
    j.dE.prototype = (function () {
        var l = function (m, n) {
            return function (o) {
                if (typeof a != 'undefined') m.oW(n, new j.event(o));
            };
        };
        return {
            kk: function () {
                var m;
                if (!(m = this.dw('_'))) this.fL('_', m = {});
                return m;
            }, on: function (m) {
                var p = this;
                var n = p.dw('_cke_nativeListeners');
                if (!n) {
                    n = {};
                    p.fL('_cke_nativeListeners', n);
                }
                if (!n[m]) {
                    var o = n[m] = l(p, m);
                    if (p.$.addEventListener) p.$.addEventListener(m, o, !!a.event.jP); else if (p.$.attachEvent) p.$.attachEvent('on' + m, o);
                }
                return a.event.prototype.on.apply(p, arguments);
            }, removeListener: function (m) {
                var p = this;
                a.event.prototype.removeListener.apply(p, arguments);
                if (!p.rC(m)) {
                    var n = p.dw('_cke_nativeListeners'), o = n && n[m];
                    if (o) {
                        if (p.$.removeEventListener) p.$.removeEventListener(m, o, false); else if (p.$.detachEvent) p.$.detachEvent('on' + m, o);
                        delete n[m];
                    }
                }
            }
        };
    })();
    (function (l) {
        var m = {};
        l.equals = function (n) {
            return n && n.$ === this.$;
        };
        l.fL = function (n, o) {
            var p = this.iY(), q = m[p] || (m[p] = {});
            q[n] = o;
            return this;
        };
        l.dw = function (n) {
            var o = this.$._ckf_expando, p = o && m[o];
            return p && p[n];
        };
        l.jF = function (n) {
            var o = this.$._ckf_expando, p = o && m[o], q = p && p[n];
            if (typeof q != 'undefined') delete p[n];
            return q || null;
        };
        l.iY = function () {
            return this.$._ckf_expando || (this.$._ckf_expando = k.getNextNumber());
        };
        a.event.du(l);
    })(j.dE.prototype);
    j.window = function (l) {
        j.dE.call(this, l);
    };
    j.window.prototype = new j.dE();
    k.extend(j.window.prototype, {
        focus: function () {
            if (h.webkit && this.$.parent) this.$.parent.focus();
            this.$.focus();
        }, eR: function () {
            var l = this.$.document, m = l.compatMode == 'CSS1Compat';
            return {
                width: (m ? l.documentElement.clientWidth : l.body.clientWidth) || 0,
                height: (m ? l.documentElement.clientHeight : l.body.clientHeight) || 0
            };
        }, hV: function () {
            var l = this.$;
            if ('pageXOffset' in l)return {x: l.pageXOffset || 0, y: l.pageYOffset || 0}; else {
                var m = l.document;
                return {
                    x: m.documentElement.scrollLeft || m.body.scrollLeft || 0,
                    y: m.documentElement.scrollTop || m.body.scrollTop || 0
                };
            }
        }
    });
    j.document = function (l) {
        j.dE.call(this, l);
    };
    var l = j.document;
    l.prototype = new j.dE();
    k.extend(l.prototype, {
        appendStyleSheet: function (m) {
            var o = this;
            if (o.$.createStyleSheet) o.$.createStyleSheet(m); else {
                var n = new j.element('link', o);
                n.setAttributes({rel: 'stylesheet', type: 'text/css', href: m});
                o.getHead().append(n);
            }
        }, createElement: function (m, n) {
            var o = new j.element(m, this);
            if (n) {
                if (n.attributes) o.setAttributes(n.attributes);
                if (n.gS) o.setStyles(n.gS);
            }
            return o;
        }, jT: function (m) {
            return new j.text(m, this);
        }, focus: function () {
            this.getWindow().focus();
        }, getById: function (m) {
            var n = this.$.getElementById(m);
            return n ? new j.element(n) : null;
        }, vu: function (m, n) {
            var o = this.$.documentElement;
            for (var p = 0; o && p < m.length; p++) {
                var q = m[p];
                if (!n) {
                    o = o.childNodes[q];
                    continue;
                }
                var r = -1;
                for (var s = 0; s < o.childNodes.length; s++) {
                    var t = o.childNodes[s];
                    if (n === true && t.nodeType == 3 && t.previousSibling && t.previousSibling.nodeType == 3)continue;
                    r++;
                    if (r == q) {
                        o = t;
                        break;
                    }
                }
            }
            return o ? new j.bi(o) : null;
        }, eG: function (m, n) {
            if (!i && n) m = n + ':' + m;
            return new j.iT(this.$.getElementsByTagName(m));
        }, getHead: function () {
            var m = this.$.getElementsByTagName('head')[0];
            m = new j.element(m);
            return (this.getHead = function () {
                return m;
            })();
        }, bH: function () {
            var m = new j.element(this.$.body);
            return (this.bH = function () {
                return m;
            })();
        }, gT: function () {
            var m = new j.element(this.$.documentElement);
            return (this.gT = function () {
                return m;
            })();
        }, getWindow: function () {
            var m = new j.window(this.$.parentWindow || this.$.defaultView);
            return (this.getWindow = function () {
                return m;
            })();
        }
    });
    j.bi = function (m) {
        if (m) {
            switch (m.nodeType) {
                case a.cv:
                    return new j.element(m);
                case a.fl:
                    return new j.text(m);
            }
            j.dE.call(this, m);
        }
        return this;
    };
    j.bi.prototype = new j.dE();
    a.cv = 1;
    a.fl = 3;
    a.va = 8;
    a.om = 11;
    a.oh = 0;
    a.op = 1;
    a.gW = 2;
    a.gX = 4;
    a.mo = 8;
    a.lF = 16;
    k.extend(j.bi.prototype, {
        appendTo: function (m, n) {
            m.append(this, n);
            return m;
        }, clone: function (m, n) {
            var o = this.$.cloneNode(m);
            if (!n) {
                var p = function (q) {
                    if (q.nodeType != a.cv)return;
                    q.removeAttribute('id', false);
                    q.removeAttribute('_ckf_expando', false);
                    var r = q.childNodes;
                    for (var s = 0; s < r.length; s++)p(r[s]);
                };
                p(o);
            }
            return new j.bi(o);
        }, gE: function () {
            return !!this.$.previousSibling;
        }, ge: function () {
            return !!this.$.nextSibling;
        }, kB: function (m) {
            m.$.parentNode.insertBefore(this.$, m.$.nextSibling);
            return m;
        }, insertBefore: function (m) {
            m.$.parentNode.insertBefore(this.$, m.$);
            return m;
        }, vP: function (m) {
            this.$.parentNode.insertBefore(m.$, this.$);
            return m;
        }, lU: function (m) {
            var n = [], o = this.getDocument().$.documentElement, p = this.$;
            while (p && p != o) {
                var q = p.parentNode, r = -1;
                for (var s = 0; s < q.childNodes.length; s++) {
                    var t = q.childNodes[s];
                    if (m && t.nodeType == 3 && t.previousSibling && t.previousSibling.nodeType == 3)continue;
                    r++;
                    if (t == p)break;
                }
                n.unshift(r);
                p = p.parentNode;
            }
            return n;
        }, getDocument: function () {
            var m = new l(this.$.ownerDocument || this.$.parentNode.ownerDocument);
            return (this.getDocument = function () {
                return m;
            })();
        }, vA: function () {
            var m = this.$, n = m.parentNode && m.parentNode.firstChild, o = -1;
            while (n) {
                o++;
                if (n == m)return o;
                n = n.nextSibling;
            }
            return -1;
        }, hL: function (m, n, o) {
            if (o && !o.call) {
                var p = o;
                o = function (s) {
                    return !s.equals(p);
                };
            }
            var q = !m && this.getFirst && this.getFirst(), r;
            if (!q) {
                if (this.type == a.cv && o && o(this, true) === false)return null;
                q = this.dG();
            }
            while (!q && (r = (r || this).getParent())) {
                if (o && o(r, true) === false)return null;
                q = r.dG();
            }
            if (!q)return null;
            if (o && o(q) === false)return null;
            if (n && n != q.type)return q.hL(false, n, o);
            return q;
        }, hZ: function (m, n, o) {
            if (o && !o.call) {
                var p = o;
                o = function (s) {
                    return !s.equals(p);
                };
            }
            var q = !m && this.dB && this.dB(), r;
            if (!q) {
                if (this.type == a.cv && o && o(this, true) === false)return null;
                q = this.cf();
            }
            while (!q && (r = (r || this).getParent())) {
                if (o && o(r, true) === false)return null;
                q = r.cf();
            }
            if (!q)return null;
            if (o && o(q) === false)return null;
            if (n && q.type != n)return q.hZ(false, n, o);
            return q;
        }, cf: function (m) {
            var n = this.$, o;
            do {
                n = n.previousSibling;
                o = n && new j.bi(n);
            } while (o && m && !m(o));
            return o;
        }, vs: function () {
            return this.cf(function (m) {
                return m.$.nodeType == 1;
            });
        }, dG: function (m) {
            var n = this.$, o;
            do {
                n = n.nextSibling;
                o = n && new j.bi(n);
            } while (o && m && !m(o));
            return o;
        }, vk: function () {
            return this.dG(function (m) {
                return m.$.nodeType == 1;
            });
        }, getParent: function () {
            var m = this.$.parentNode;
            return m && m.nodeType == 1 ? new j.bi(m) : null;
        }, vn: function (m) {
            var n = this, o = [];
            do o[m ? 'push' : 'unshift'](n); while (n = n.getParent());
            return o;
        }, vv: function (m) {
            var o = this;
            if (m.equals(o))return o;
            if (m.contains && m.contains(o))return m;
            var n = o.contains ? o : o.getParent();
            do {
                if (n.contains(m))return n;
            } while (n = n.getParent());
            return null;
        }, gz: function (m) {
            var n = this.$, o = m.$;
            if (n.compareDocumentPosition)return n.compareDocumentPosition(o);
            if (n == o)return a.oh;
            if (this.type == a.cv && m.type == a.cv) {
                if (n.contains) {
                    if (n.contains(o))return a.lF + a.gX;
                    if (o.contains(n))return a.mo + a.gW;
                }
                if ('sourceIndex' in n)return n.sourceIndex < 0 || o.sourceIndex < 0 ? a.op : n.sourceIndex < o.sourceIndex ? a.gX : a.gW;
            }
            var p = this.lU(), q = m.lU(), r = Math.min(p.length, q.length);
            for (var s = 0; s <= r - 1; s++) {
                if (p[s] != q[s]) {
                    if (s < r)return p[s] < q[s] ? a.gX : a.gW;
                    break;
                }
            }
            return p.length < q.length ? a.lF + a.gX : a.mo + a.gW;
        }, vw: function (m, n) {
            var o = this.$;
            if (!n) o = o.parentNode;
            while (o) {
                if (o.nodeName && o.nodeName.toLowerCase() == m)return new j.bi(o);
                o = o.parentNode;
            }
            return null;
        }, vX: function (m, n) {
            var o = this.$;
            if (!n) o = o.parentNode;
            while (o) {
                if (o.nodeName && o.nodeName.toLowerCase() == m)return true;
                o = o.parentNode;
            }
            return false;
        }, move: function (m, n) {
            m.append(this.remove(), n);
        }, remove: function (m) {
            var n = this.$, o = n.parentNode;
            if (o) {
                if (m)for (var p; p = n.firstChild;)o.insertBefore(n.removeChild(p), n);
                o.removeChild(n);
            }
            return this;
        }, replace: function (m) {
            this.insertBefore(m);
            m.remove();
        }, trim: function () {
            this.ltrim();
            this.rtrim();
        }, ltrim: function () {
            var p = this;
            var m;
            while (p.getFirst && (m = p.getFirst())) {
                if (m.type == a.fl) {
                    var n = k.ltrim(m.getText()), o = m.hJ();
                    if (!n) {
                        m.remove();
                        continue;
                    } else if (n.length < o) {
                        m.split(o - n.length);
                        p.$.removeChild(p.$.firstChild);
                    }
                }
                break;
            }
        }, rtrim: function () {
            var p = this;
            var m;
            while (p.dB && (m = p.dB())) {
                if (m.type == a.fl) {
                    var n = k.rtrim(m.getText()), o = m.hJ();
                    if (!n) {
                        m.remove();
                        continue;
                    } else if (n.length < o) {
                        m.split(n.length);
                        p.$.lastChild.parentNode.removeChild(p.$.lastChild);
                    }
                }
                break;
            }
            if (!i && !h.opera) {
                m = p.$.lastChild;
                if (m && m.type == 1 && m.nodeName.toLowerCase() == 'br') m.parentNode.removeChild(m);
            }
        }
    });
    j.iT = function (m) {
        this.$ = m;
    };
    j.iT.prototype = {
        count: function () {
            return this.$.length;
        }, getItem: function (m) {
            var n = this.$[m];
            return n ? new j.bi(n) : null;
        }
    };
    j.element = function (m, n) {
        if (typeof m == 'string') m = (n ? n.$ : document).createElement(m);
        j.dE.call(this, m);
    };
    var m = j.element;
    m.eB = function (n) {
        return n && (n.$ ? n : new m(n));
    };
    m.prototype = new j.bi();
    m.kE = function (n, o) {
        var p = new m('div', o);
        p.setHtml(n);
        return p.getFirst().remove();
    };
    m.rS = function (n, o, p, q) {
        var r = o.dw('list_marker_id') || o.fL('list_marker_id', k.getNextNumber()).dw('list_marker_id'), s = o.dw('list_marker_names') || o.fL('list_marker_names', {}).dw('list_marker_names');
        n[r] = o;
        s[p] = 1;
        return o.fL(p, q);
    };
    m.sM = function (n) {
        for (var o in n)m.qZ(n, n[o], true);
    };
    m.qZ = function (n, o, p) {
        var q = o.dw('list_marker_names'), r = o.dw('list_marker_id');
        for (var s in q)o.jF(s);
        o.jF('list_marker_names');
        if (p) {
            o.jF('list_marker_id');
            delete n[r];
        }
    };
    k.extend(m.prototype, {
        type: a.cv, addClass: function (n) {
            var o = this.$.className;
            if (o) {
                var p = new RegExp('(?:^|\\s)' + n + '(?:\\s|$)', '');
                if (!p.test(o)) o += ' ' + n;
            }
            this.$.className = o || n;
        }, removeClass: function (n) {
            var o = this.getAttribute('class');
            if (o) {
                var p = new RegExp('(?:^|\\s+)' + n + '(?=\\s|$)', 'i');
                if (p.test(o)) {
                    o = o.replace(p, '').replace(/^\s+/, '');
                    if (o) this.setAttribute('class', o); else this.removeAttribute('class');
                }
            }
        }, hasClass: function (n) {
            var o = new RegExp('(?:^|\\s+)' + n + '(?=\\s|$)', '');
            return o.test(this.getAttribute('class'));
        }, append: function (n, o) {
            var p = this;
            if (typeof n == 'string') n = p.getDocument().createElement(n);
            if (o) p.$.insertBefore(n.$, p.$.firstChild); else p.$.appendChild(n.$);
            a.log('[DOM] DOM flush into ' + p.getName());
            return n;
        }, appendHtml: function (n) {
            var p = this;
            if (!p.$.childNodes.length) p.setHtml(n); else {
                var o = new m('div', p.getDocument());
                o.setHtml(n);
                o.jg(p);
            }
        }, appendText: function (n) {
            if (this.$.text != undefined) this.$.text += n; else this.append(new j.text(n));
        }, pd: function () {
            var o = this;
            var n = o.dB();
            while (n && n.type == a.fl && !k.rtrim(n.getText()))n = n.cf();
            if (!n || !n.is || !n.is('br')) o.append(h.opera ? o.getDocument().jT('') : o.getDocument().createElement('br'));
        }, tV: function (n) {
            var q = this;
            var o = new j.mk(q.getDocument());
            o.setStartAfter(q);
            o.setEndAfter(n);
            var p = o.extractContents();
            o.insertNode(q.remove());
            p.kA(q);
        }, contains: i || h.webkit ? function (n) {
                var o = this.$;
                return n.type != a.cv ? o.contains(n.getParent().$) : o != n.$ && o.contains(n.$);
            } : function (n) {
                return !!(this.$.compareDocumentPosition(n.$) & 16);
            }, focus: function () {
            try {
                this.$.focus();
            } catch (n) {
            }
        }, getHtml: function () {
            return this.$.innerHTML;
        }, fH: function () {
            var o = this;
            if (o.$.outerHTML)return o.$.outerHTML.replace(/<\?[^>]*>/, '');
            var n = o.$.ownerDocument.createElement('div');
            n.appendChild(o.$.cloneNode(true));
            return n.innerHTML;
        }, setHtml: function (n) {
            a.log('[DOM] DOM flush into ' + this.getName());
            return this.$.innerHTML = n;
        }, setText: function (n) {
            m.prototype.setText = this.$.innerText != undefined ? function (o) {
                    a.log('[DOM] Text flush');
                    return this.$.innerText = o;
                } : function (o) {
                    a.log('[DOM] Text flush');
                    return this.$.textContent = o;
                };
            return this.setText(n);
        }, getAttribute: (function () {
            var n = function (o) {
                return this.$.getAttribute(o, 2);
            };
            if (i && (h.ie7Compat || h.ie6Compat))return function (o) {
                var q = this;
                switch (o) {
                    case 'class':
                        o = 'className';
                        break;
                    case 'tabindex':
                        var p = n.call(q, o);
                        if (p !== 0 && q.$.tabIndex === 0) p = null;
                        return p;
                        break;
                    case 'checked':
                        return q.$.checked;
                        break;
                    case 'style':
                        return q.$.style.cssText;
                }
                return n.call(q, o);
            }; else return n;
        })(), getChildren: function () {
            return new j.iT(this.$.childNodes);
        }, getComputedStyle: i ? function (n) {
                return this.$.currentStyle[k.cssStyleToDomStyle(n)];
            } : function (n) {
                return this.getWindow().$.getComputedStyle(this.$, '').getPropertyValue(n);
            }, pf: function () {
            var n = a.ga[this.getName()];
            this.pf = function () {
                return n;
            };
            return n;
        }, eG: l.prototype.eG, vp: i ? function () {
                var n = this.$.tabIndex;
                if (n === 0 && !a.ga.ug[this.getName()] && parseInt(this.getAttribute('tabindex'), 10) !== 0) n = -1;
                return n;
            } : h.webkit ? function () {
                    var n = this.$.tabIndex;
                    if (n == undefined) {
                        n = parseInt(this.getAttribute('tabindex'), 10);
                        if (isNaN(n)) n = -1;
                    }
                    return n;
                } : function () {
                    return this.$.tabIndex;
                }, getText: function () {
            return this.$.textContent || this.$.innerText || '';
        }, getWindow: function () {
            return this.getDocument().getWindow();
        }, dS: function () {
            return this.$.id || null;
        }, data: function (n, o) {
            n = 'data-' + n;
            if (o === undefined)return this.getAttribute(n); else if (o === false) this.removeAttribute(n); else this.setAttribute(n, o);
            return null;
        }, vm: function () {
            return this.$.name || null;
        }, getName: function () {
            var n = this.$.nodeName.toLowerCase();
            if (i && !(document.documentMode > 8)) {
                var o = this.$.scopeName;
                if (o != 'HTML') n = o.toLowerCase() + ':' + n;
            }
            return (this.getName = function () {
                return n;
            })();
        }, getValue: function () {
            return this.$.value;
        }, getFirst: function () {
            var n = this.$.firstChild;
            return n ? new j.bi(n) : null;
        }, dB: function (n) {
            var o = this.$.lastChild, p = o && new j.bi(o);
            if (p && n && !n(p)) p = p.cf(n);
            return p;
        }, rd: function (n) {
            return this.$.style[k.cssStyleToDomStyle(n)];
        }, is: function () {
            var n = this.getName();
            for (var o = 0; o < arguments.length; o++) {
                if (arguments[o] == n)return true;
            }
            return false;
        }, vL: function () {
            var n = this.getName(), o = !a.ga.uj[n] && (a.ga[n] || a.ga.span);
            return o && o['#'];
        }, isIdentical: function (n) {
            if (this.getName() != n.getName())return false;
            var o = this.$.attributes, p = n.$.attributes, q = o.length, r = p.length;
            if (!i && q != r)return false;
            for (var s = 0; s < q; s++) {
                var t = o[s];
                if ((!i || t.specified && t.nodeName != '_ckf_expando') && t.nodeValue != n.getAttribute(t.nodeName))return false;
            }
            if (i)for (s = 0; s < r; s++) {
                t = p[s];
                if ((!i || t.specified && t.nodeName != '_ckf_expando') && t.nodeValue != o.getAttribute(t.nodeName))return false;
            }
            return true;
        }, isVisible: function () {
            return this.$.offsetWidth && this.$.style.visibility != 'hidden';
        }, hasAttributes: i && (h.ie7Compat || h.ie6Compat) ? function () {
                var n = this.$.attributes;
                for (var o = 0; o < n.length; o++) {
                    var p = n[o];
                    switch (p.nodeName) {
                        case 'class':
                            if (this.getAttribute('class'))return true;
                        case '_ckf_expando':
                            continue;
                        default:
                            if (p.specified)return true;
                    }
                }
                return false;
            } : function () {
                var n = this.$.attributes;
                return n.length > 1 || n.length == 1 && n[0].nodeName != '_ckf_expando';
            }, hasAttribute: function (n) {
            var o = this.$.attributes.getNamedItem(n);
            return !!(o && o.specified);
        }, hide: function () {
            this.setStyle('display', 'none');
        }, jg: function (n, o) {
            var p = this.$;
            n = n.$;
            if (p == n)return;
            var q;
            if (o)while (q = p.lastChild)n.insertBefore(p.removeChild(q), n.firstChild); else while (q = p.firstChild)n.appendChild(p.removeChild(q));
        }, show: function () {
            this.setStyles({display: '', visibility: ''});
        }, setAttribute: (function () {
            var n = function (o, p) {
                this.$.setAttribute(o, p);
                return this;
            };
            if (i && (h.ie7Compat || h.ie6Compat))return function (o, p) {
                var q = this;
                if (o == 'class') q.$.className = p; else if (o == 'style') q.$.style.cssText = p; else if (o == 'tabindex') q.$.tabIndex = p; else if (o == 'checked') q.$.checked = p; else n.apply(q, arguments);
                return q;
            }; else return n;
        })(), setAttributes: function (n) {
            for (var o in n)this.setAttribute(o, n[o]);
            return this;
        }, setValue: function (n) {
            this.$.value = n;
            return this;
        }, removeAttribute: (function () {
            var n = function (o) {
                this.$.removeAttribute(o);
            };
            if (i && (h.ie7Compat || h.ie6Compat))return function (o) {
                if (o == 'class') o = 'className'; else if (o == 'tabindex') o = 'tabIndex';
                n.call(this, o);
            }; else return n;
        })(), uW: function (n) {
            for (var o = 0; o < n.length; o++)this.removeAttribute(n[o]);
        }, removeStyle: function (n) {
            var o = this;
            if (o.$.style.removeAttribute) o.$.style.removeAttribute(k.cssStyleToDomStyle(n)); else o.setStyle(n, '');
            if (!o.$.style.cssText) o.removeAttribute('style');
        }, setStyle: function (n, o) {
            this.$.style[k.cssStyleToDomStyle(n)] = o;
            return this;
        }, setStyles: function (n) {
            for (var o in n)this.setStyle(o, n[o]);
            return this;
        }, setOpacity: function (n) {
            if (i && h.version < 9) {
                n = Math.round(n * 100);
                this.setStyle('filter', n >= 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + n + ')');
            } else this.setStyle('opacity', n);
        }, unselectable: h.gecko ? function () {
                this.$.style.MozUserSelect = 'none';
            } : h.webkit ? function () {
                    this.$.style.uE = 'none';
                } : function () {
                    if (i || h.opera) {
                        var n = this.$, o, p = 0;
                        n.unselectable = 'on';
                        while (o = n.all[p++])switch (o.tagName.toLowerCase()) {
                            case 'iframe':
                            case 'textarea':
                            case 'input':
                            case 'select':
                                break;
                            default:
                                o.unselectable = 'on';
                        }
                    }
                }, vr: function () {
            var n = this;
            while (n.getName() != 'html') {
                if (n.getComputedStyle('position') != 'static')return n;
                n = n.getParent();
            }
            return null;
        }, ir: function (n) {
            var I = this;
            var o = 0, p = 0, q = I.getDocument().bH(), r = I.getDocument().$.compatMode == 'BackCompat', s = I.getDocument();
            if (document.documentElement.getBoundingClientRect) {
                var t = I.$.getBoundingClientRect(), u = s.$, v = u.documentElement, w = v.clientTop || q.$.clientTop || 0, x = v.clientLeft || q.$.clientLeft || 0, y = true;
                if (i) {
                    var z = s.gT().contains(I), A = s.bH().contains(I);
                    y = r && A || !r && z;
                }
                if (y) {
                    o = t.left + (!r && v.scrollLeft || q.$.scrollLeft);
                    o -= x;
                    p = t.top + (!r && v.scrollTop || q.$.scrollTop);
                    p -= w;
                }
            } else {
                var B = I, C = null, D;
                while (B && !(B.getName() == 'body' || B.getName() == 'html')) {
                    o += B.$.offsetLeft - B.$.scrollLeft;
                    p += B.$.offsetTop - B.$.scrollTop;
                    if (!B.equals(I)) {
                        o += B.$.clientLeft || 0;
                        p += B.$.clientTop || 0;
                    }
                    var E = C;
                    while (E && !E.equals(B)) {
                        o -= E.$.scrollLeft;
                        p -= E.$.scrollTop;
                        E = E.getParent();
                    }
                    C = B;
                    B = (D = B.$.offsetParent) ? new m(D) : null;
                }
            }
            if (n) {
                var F = I.getWindow(), G = n.getWindow();
                if (!F.equals(G) && F.$.frameElement) {
                    var H = new m(F.$.frameElement).ir(n);
                    o += H.x;
                    p += H.y;
                }
            }
            if (!document.documentElement.getBoundingClientRect)if (h.gecko && !r) {
                o += I.$.clientLeft ? 1 : 0;
                p += I.$.clientTop ? 1 : 0;
            }
            return {x: o, y: p};
        }, scrollIntoView: function (n) {
            var t = this;
            var o = t.getWindow(), p = o.eR().height, q = p * -1;
            if (n) q += p; else {
                q += t.$.offsetHeight || 0;
                q += parseInt(t.getComputedStyle('marginBottom') || 0, 10) || 0;
            }
            var r = t.ir();
            q += r.y;
            q = q < 0 ? 0 : q;
            var s = o.hV().y;
            if (q > s || q < s - p) o.$.scrollTo(0, q);
        }, bR: function (n) {
            var o = this;
            switch (n) {
                case a.eV:
                    o.addClass('cke_on');
                    o.removeClass('cke_off');
                    o.removeClass('cke_disabled');
                    break;
                case a.aY:
                    o.addClass('cke_disabled');
                    o.removeClass('cke_off');
                    o.removeClass('cke_on');
                    break;
                default:
                    o.addClass('cke_off');
                    o.removeClass('cke_on');
                    o.removeClass('cke_disabled');
                    break;
            }
        }, getFrameDocument: function () {
            var n = this.$;
            try {
                n.contentWindow.document;
            } catch (o) {
                n.src = n.src;
                if (i && h.version < 7) window.showModalDialog('javascript:document.write("<script>window.setTimeout(function(){window.close();},50);</script>")');
            }
            return n && new l(n.contentWindow.document);
        }, qw: function (n, o) {
            var u = this;
            var p = u.$.attributes;
            o = o || {};
            for (var q = 0; q < p.length; q++) {
                var r = p[q];
                if (r.specified || i && r.nodeValue && r.nodeName.toLowerCase() == 'value') {
                    var s = r.nodeName;
                    if (s in o)continue;
                    var t = u.getAttribute(s);
                    if (t === null) t = r.nodeValue;
                    n.setAttribute(s, t);
                }
            }
            if (u.$.style.cssText !== '') n.$.style.cssText = u.$.style.cssText;
        }, renameNode: function (n) {
            var q = this;
            if (q.getName() == n)return;
            var o = q.getDocument(), p = new m(n, o);
            q.qw(p);
            q.jg(p);
            q.$.parentNode.replaceChild(p.$, q.$);
            p.$._ckf_expando = q.$._ckf_expando;
            q.$ = p.$;
        }, getChild: function (n) {
            var o = this.$;
            if (!n.slice) o = o.childNodes[n]; else while (n.length > 0 && o)o = o.childNodes[n.shift()];
            return o ? new j.bi(o) : null;
        }, iu: function () {
            return this.$.childNodes.length;
        }, hX: function () {
            this.on('contextmenu', function (n) {
                if (!n.data.bK().hasClass('cke_enable_context_menu')) n.data.preventDefault();
            });
        }, 'toString': function () {
            return this.getName() + '#' + this.dS() + '.' + this.getAttribute('class');
        }
    });
    (function () {
        var n = {
            width: ['border-left-width', 'border-right-width', 'padding-left', 'padding-right'],
            height: ['border-top-width', 'border-bottom-width', 'padding-top', 'padding-bottom']
        };

        function o(p) {
            var q = 0;
            for (var r = 0, s = n[p].length; r < s; r++)q += parseInt(this.getComputedStyle(n[p][r]) || 0, 10) || 0;
            return q;
        };
        m.prototype.setSize = function (p, q, r) {
            if (typeof q == 'number') {
                if (r && !(i && h.quirks)) q -= o.call(this, p);
                this.setStyle(p, q + 'px');
            }
        };
        m.prototype.hR = function (p, q) {
            var r = Math.max(this.$['offset' + k.capitalize(p)], this.$['client' + k.capitalize(p)]) || 0;
            if (q) r -= o.call(this, p);
            return r;
        };
    })();
    a.command = function (n, o) {
        this.pW = [];
        this.exec = function (p) {
            if (this.bu == a.aY || this.readOnly === false && n.config.readOnly)return false;
            if (o.oD) n.focus();
            return o.exec.call(this, n, p) !== false;
        };
        k.extend(this, o, {iH: {qt: 1}, oD: true, bu: a.aS});
        a.event.call(this);
    };
    a.command.prototype = {
        enable: function () {
            var n = this;
            if (n.bu == a.aY) n.bR(!n.vf || typeof n.lJ == 'undefined' ? a.aS : n.lJ);
        }, disable: function () {
            this.bR(a.aY);
        }, bR: function (n) {
            var o = this;
            if (o.bu == n)return false;
            o.lJ = o.bu;
            o.bu = n;
            o.oW('bu');
            return true;
        }, rJ: function () {
            var n = this;
            if (n.bu == a.aS) n.bR(a.eV); else if (n.bu == a.eV) n.bR(a.aS);
        }
    };
    a.event.du(a.command.prototype, true);
    a.config = {
        customConfig: a.getUrl('config.js'),
        connectorLanguage: 'java',
        language: '',
        defaultLanguage: 'en',
        defaultViewType: 'thumbnails',
        defaultSortBy: 'filename',
        defaultDisplayFilename: true,
        defaultDisplayDate: true,
        defaultDisplayFilesize: true,
        pO: '',
        height: 400,
        plugins: 'foldertree,folder,filebrowser,container,connector,resource,search,toolbar,formpanel,filesview,status,contextmenu,uploadform,keystrokes,dragdrop,basket,dialog,tools,resize,maximize,help,mobile,html5upload,gallery,csrftokenmanager',
        extraPlugins: '',
        fileIcons: 'ai|avi|bmp|cs|dll|doc|docx|exe|fla|gif|jpg|js|mdb|mp3|ogg|pdf|ppt|pptx|rdp|swf|swt|txt|vsd|xls|xlsx|xml|zip',
        removePlugins: '',
        tabIndex: 0,
        thumbnailDelay: 100,
        theme: 'default',
        skin: 'kama',
        width: '100%',
        baseFloatZIndex: 10000,
        directDownload: false,
        log: false,
        logStackTrace: false,
        rememberLastFolder: true,
        id: null,
        startupPath: '',
        startupFolderExpanded: true,
        selectActionFunction: null,
        selectActionData: null,
        selectThumbnailActionFunction: null,
        selectThumbnailActionData: null,
        disableThumbnailSelection: false,
        thumbsUrl: null,
        thumbsDirectAccess: false,
        imagesMaxWidth: 0,
        imagesMaxHeight: 0,
        selectActionType: 'js',
        resourceType: null,
        disableHelpButton: false,
        connectorPath: '',
        connectorInfo: '',
        uiColor: null,
        showContextMenuArrow: false,
        useNativeIcons: false,
        maxSimultaneousUploads: 1,
        readOnly: false,
        selectMultiple: true,
        popupTitle: 'CKFinder 2',
        popupFeatures: 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes'
    };
    CKFinder.config = a.config;
    var n = a.config;
    a.dU = function (o, p) {
        this.rG = o;
        this.message = p;
    };
    a.fs = function (o) {
        if (o.fs)return o.fs;
        this.hasFocus = false;
        this._ = {application: o};
        return this;
    };
    a.fs.prototype = {
        focus: function () {
            var p = this;
            if (p._.fW) clearTimeout(p._.fW);
            if (!p.hasFocus) {
                if (a.nG) a.nG.fs.ly();
                var o = p._.application;
                o.container.getFirst().addClass('cke_focus');
                p.hasFocus = true;
                o.oW('focus');
            }
        }, blur: function () {
            var o = this;
            if (o._.fW) clearTimeout(o._.fW);
            o._.fW = setTimeout(function () {
                delete o._.fW;
                o.ly();
            }, 100);
        }, ly: function () {
            if (this.hasFocus) {
                var o = this._.application;
                o.container.getFirst().removeClass('cke_focus');
                this.hasFocus = false;
                o.oW('blur');
            }
        }
    };
    (function () {
        var o = {};
        a.lang = {
            ko: {
                bg: 1,
                ca: 1,
                cs: 1,
                cy: 1,
                da: 1,
                de: 1,
                el: 1,
                en: 1,
                eo: 1,
                es: 1,
                'es-mx': 1,
                et: 1,
                fa: 1,
                fi: 1,
                fr: 1,
                gu: 1,
                he: 1,
                hi: 1,
                hr: 1,
                hu: 1,
                it: 1,
                ja: 1,
                lv: 1,
                lt: 1,
                nb: 1,
                nl: 1,
                no: 1,
                nn: 1,
                pl: 1,
                'pt-br': 1,
                ro: 1,
                ru: 1,
                sk: 1,
                sl: 1,
                sr: 1,
                sv: 1,
                tr: 1,
                vi: 1,
                'zh-cn': 1,
                'zh-tw': 1
            }, load: function (p, q, r) {
                if (!p || !a.lang.ko[p]) p = this.jV(q, p);
                if (!this[p]) a.scriptLoader.load(a.getUrl('lang/' + p + '.js'), function () {
                    r(p, CKFinder.lang[p]);
                }, this); else r(p, this[p]);
            }, jV: function (p, q) {
                var r = this.ko;
                q = q || navigator.userLanguage || navigator.language;
                var s = q.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/), t = s[1], u = s[2];
                if (r[t + '-' + u]) t = t + '-' + u; else if (!r[t]) t = null;
                a.lang.jV = t ? function () {
                        return t;
                    } : function (v) {
                        return v;
                    };
                return t || p;
            }
        };
    })();
    (function () {
        a.log = function () {
            if (!n.log && !window.CKFINDER_LOG)return;
            var o = '';
            for (var p = 0; p < arguments.length; p++) {
                var q = arguments[p];
                if (!q)continue;
                if (o) o += '; ';
                switch (typeof q) {
                    case 'function':
                        var r = /function (\w+?)\(/.exec(q.toString());
                        r = r ? r[1] : 'anonymous func';
                        o += r;
                        break;
                    default:
                        o += q ? q.toString() : '';
                }
            }
            a._.log.push(o);
            if (typeof window.console == 'object')if (!console.log.apply) console.log(o); else console.log.apply(console, arguments);
        };
        a.ba = function (o) {
            if (n.logStackTrace) a.log('[EXCEPTION] ' + o.toString());
            return o;
        };
        a.mZ = function (o) {
            var p = '';
            for (var q = 0; q < a._.log.length; q++)p += q + 1 + '. ' + a._.log[q] + '\n';
            return p;
        };
        a._.log = [];
    })();
    a.scriptLoader = (function () {
        var o = {}, p = {};
        return {
            load: function (q, r, s, t, u, v) {
                var w = typeof q == 'string';
                if (w) q = [q];
                if (!s) s = a;
                var x = q.length, y = [], z = [], A = function (G) {
                    if (r)if (w) r.call(s, G); else r.call(s, y, z);
                };
                if (x === 0) {
                    A(true);
                    return;
                }
                var B = function (G, H) {
                    (H ? y : z).push(G);
                    if (--x <= 0) A(H);
                }, C = function (G, H) {
                    o[G] = 1;
                    var I = p[G];
                    delete p[G];
                    for (var J = 0; J < I.length; J++)I[J](G, H);
                }, D = function (G) {
                    if (t !== true && o[G]) {
                        B(G, true);
                        return;
                    }
                    var H = p[G] || (p[G] = []);
                    H.push(B);
                    if (H.length > 1)return;
                    var I = new m('script', v);
                    I.setAttributes({type: 'text/javascript', src: G});
                    if (r)if (i) I.$.onreadystatechange = function () {
                        if (I.$.readyState == 'loaded' || I.$.readyState == 'complete') {
                            I.$.onreadystatechange = null;
                            a.log('[LOADED] ' + G);
                            C(G, true);
                        }
                    }; else {
                        I.$.onload = function () {
                            setTimeout(function () {
                                a.log('[LOADED] ' + G);
                                C(G, true);
                            }, 0);
                        };
                        I.$.onerror = function () {
                            C(G, false);
                        };
                    }
                    I.appendTo(u ? u : a.document.getHead());
                };
                for (var E = 0, F = x; E < F; E++)D(q[E]);
            }, uq: function (q) {
                var r = new m('script');
                r.setAttribute('type', 'text/javascript');
                r.appendText(q);
                r.appendTo(a.document.getHead());
            }
        };
    })();
    CKFinder.scriptLoader = a.scriptLoader;
    a.fQ = function (o, p) {
        var q = this;
        q.basePath = o;
        q.fileName = p;
        q.bX = {};
        q.loaded = {};
        q.jn = {};
        q._ = {rZ: {}};
    };
    a.fQ.prototype = {
        add: function (o, p) {
            if (this.bX[o])throw '[CKFINDER.fQ.add] The resource name "' + o + '" is already bX.';
            this.bX[o] = p || {};
        }, eB: function (o) {
            return this.bX[o] || null;
        }, getPath: function (o) {
            var p = this.jn[o];
            return a.getUrl(p && p.dir || this.basePath + o + '/');
        }, pi: function (o) {
            var p = this.jn[o];
            return a.getUrl(this.getPath(o) + (p && p.file || this.fileName + '.js'));
        }, tR: function (o, p, q) {
            o = o.split(',');
            for (var r = 0; r < o.length; r++) {
                var s = o[r];
                this.jn[s] = {dir: p, file: q};
            }
        }, load: function (o, p, q) {
            if (!k.isArray(o)) o = o ? [o] : [];
            var r = this.loaded, s = this.bX, t = [], u = {}, v = {};
            for (var w = 0; w < o.length; w++) {
                var x = o[w];
                if (!x)continue;
                if (!r[x] && !s[x]) {
                    var y = this.pi(x);
                    t.push(y);
                    if (!(y in u)) u[y] = [];
                    u[y].push(x);
                } else v[x] = this.eB(x);
            }
            a.scriptLoader.load(t, function (z, A) {
                if (A.length)throw '[CKFINDER.fQ.load] Resource name "' + u[A[0]].join(',') + '" was not found at "' + A[0] + '".';
                for (var B = 0; B < z.length; B++) {
                    var C = u[z[B]];
                    for (var D = 0; D < C.length; D++) {
                        var E = C[D];
                        v[E] = this.eB(E);
                        r[E] = 1;
                    }
                }
                p.call(q, v);
            }, this);
        }
    };
    a.plugins = new a.fQ('plugins/', 'plugin');
    var o = a.plugins;
    o.load = k.override(o.load, function (p) {
        return function (q, r, s) {
            var t = {}, u = function (v) {
                p.call(this, v, function (w) {
                    k.extend(t, w);
                    var x = [];
                    for (var y in w) {
                        var z = w[y], A = z && z.bM;
                        if (A)for (var B = 0; B < A.length; B++) {
                            if (!t[A[B]]) x.push(A[B]);
                        }
                    }
                    if (x.length) u.call(this, x); else {
                        for (y in t) {
                            z = t[y];
                            if (z.onLoad && !z.onLoad.qK) {
                                z.onLoad();
                                z.onLoad.qK = 1;
                            }
                        }
                        if (r) r.call(s || window, t);
                    }
                }, this);
            };
            u.call(this, q);
        };
    });
    o.rX = function (p, q, r) {
        var s = this.eB(p);
        s.lang[q] = r;
    };
    (function () {
        var p = {}, q = function (r, s) {
            var t = function () {
                p[r] = 1;
                s();
            }, u = new m('img');
            u.on('load', t);
            u.on('error', t);
            u.setAttribute('src', r);
        };
        a.rw = {
            load: function (r, s) {
                var t = r.length, u = function () {
                    if (--t === 0) s();
                };
                for (var v = 0; v < r.length; v++) {
                    var w = r[v];
                    if (p[w]) u(); else q(w, u);
                }
            }
        };
    })();
    a.skins = (function () {
        var p = {}, q = {}, r = {}, s = function (t, u, v, w) {
            var x = p[u];
            if (!t.skin) {
                t.skin = x;
                if (x.bz) x.bz(t);
            }
            var y = function (G) {
                for (var H = 0; H < G.length; H++)G[H] = a.getUrl(r[u] + G[H]);
            };
            if (!q[u]) {
                var z = x.ls;
                if (z && z.length > 0) {
                    y(z);
                    a.rw.load(z, function () {
                        q[u] = 1;
                        s(t, u, v, w);
                    });
                    return;
                }
                q[u] = 1;
            }
            v = x[v];
            var A = 0;
            if (v) {
                if (!v.iB) v.iB = []; else if (v.iB[t.name]) A = 1;
            } else A = 1;
            if (A) w && w(); else {
                if (v.eb === undefined) v.eb = [];
                if (v.eb[t.name] === undefined) v.eb[t.name] = [];
                var B = v.eb[t.name];
                B.push(w);
                if (B.length > 1)return;
                var C = !v.css || !v.css.length, D = !v.js || !v.js.length, E = function () {
                    if (C && D) {
                        v.iB[t.name] = 1;
                        for (var G = 0; G < B.length; G++) {
                            if (B[G]) B[G]();
                        }
                    }
                };
                if (!C) {
                    if (!v.rr) {
                        y(v.css);
                        v.rr = 1;
                    }
                    if (v.qx)for (var F = 0; F < v.css.length; F++)a.oC.appendStyleSheet(v.css[F]); else t.on('themeSpace', function (G) {
                        if (G.data.space == 'head')for (var H = 0; H < v.css.length; H++)G.data.html += "<link rel='stylesheet' href='" + v.css[H] + "'>\n";
                        G.removeListener();
                    });
                    C = 1;
                }
                if (!D) {
                    y(v.js);
                    t.scriptLoader.load(v.js, function () {
                        D = 1;
                        E();
                    });
                }
                E();
            }
        };
        return {
            add: function (t, u) {
                p[t] = u;
                u.fh = r[t] || (r[t] = a.getUrl('skins/' + t + '/'));
            }, loaded: p, load: function (t, u, v) {
                var w = t.gd, x = t.fh;
                if (p[w]) {
                    s(t, w, u, v);
                    var y = p[w];
                } else {
                    r[w] = x;
                    a.scriptLoader.load(x + 'skin.js', function () {
                        s(t, w, u, v);
                    });
                }
            }
        };
    })();
    a.gc = new a.fQ('gc/', 'theme');
    a.bY = function (p) {
        if (p.bY)return p.bY;
        this._ = {jZ: {}, items: {}, application: p};
        return this;
    };
    var p = a.bY;
    p.prototype = {
        add: function (q, r, s) {
            this._.items[q] = {type: r, command: s.command || null, mp: Array.prototype.slice.call(arguments, 2)};
        }, create: function (q) {
            var v = this;
            var r = v._.items[q], s = r && v._.jZ[r.type], t = r && r.command && v._.application.cS(r.command), u = s && s.create.apply(v, r.mp);
            if (t) t.pW.push(u);
            return u;
        }, kd: function (q, r) {
            this._.jZ[q] = r;
        }
    };
    (function () {
        var q = 0, r = function () {
            var D = 'ckfinder' + ++q;
            return a.instances && a.instances[D] ? r() : D;
        }, s = {}, t = function (D) {
            var E = D.config.customConfig;
            if (!E)return false;
            var F = s[E] || (s[E] = {});
            if (F.fn) setTimeout(function () {
                F.fn.call(D, D.config);
                if (D.config.customConfig == E || !t(D)) D.cr('customConfigLoaded');
            }, 0); else a.scriptLoader.load(E, function () {
                if (CKFinder.customConfig) F.fn = CKFinder.customConfig; else F.fn = function () {
                };
                t(D);
            });
            return true;
        }, u = function (D, E) {
            D.on('customConfigLoaded', function () {
                if (E) {
                    if (E.on)for (var F in E.on)D.on(F, E.on[F]);
                    k.extend(D.config, E, true);
                    delete D.config.on;
                }
                v(D);
            });
            if (E && E.id) D.config.id = E.id;
            if (E && E.customConfig != undefined) D.config.customConfig = E.customConfig;
            if (!t(D)) D.cr('customConfigLoaded');
        }, v = function (D) {
            var E = D.config.skin.split(','), F = E[0], G = a.getUrl(E[1] || 'skins/' + F + '/');
            D.gd = F;
            D.fh = G;
            D.iy = 'cke_skin_' + F + ' skin_' + F;
            D.qn = D.ox();
            D.on('uiReady', function () {
                D.document.getWindow().on('lW', function () {
                    k.setCookie('CKFinder_UTime', Math.round(new Date().getTime() / 1000), true);
                    k.setCookie('CKFinder_UId', encodeURIComponent(D.id ? D.id : location.href), true);
                });
            });
            D.cr('configLoaded');
            z(D);
        }, w = function (D, E) {
            a.event.jP = true;
            D.document.on('keydown', function (F) {
                var G = F.data, H = G.oV(), I = G.db();
                if (H == 116 || I == a.bP + 82 || I == a.bP + a.dy + 82) {
                    D.execCommand('refresh');
                    E.$.event && E.$.event.keyCode && (E.$.event.keyCode = 5055);
                    try {
                        F.data.preventDefault();
                    } catch (F) {
                    }
                }
            });
            a.event.jP = false;
        }, x = function (D, E, F) {
            var G = [], H, I;
            for (I = 0; I < F.length; I++) {
                H = F[I];
                G.push({evt: 'onbeforeunload', bi: H.bH().$, fO: H.bH().$.onbeforeunload}, {
                    evt: 'onunload',
                    bi: H.getWindow().$,
                    fO: H.getWindow().$.onunload
                }, {evt: 'onbeforeunload', bi: H.getWindow().$, fO: H.getWindow().$.onbeforeunload});
            }
            E.$.onunload = E.$.onbeforeunload = function () {
                var J;
                for (J = 0; J < G.length; J += 1)G[J].bi[G[J].evt] = G[J].fO;
            };
        }, y = function (D, E) {
            var F = [a.oC], G, H = E.$.top.location.href.match(/ckfinder.html/) || E.$.top.name == 'CKFinderpopup';
            if (!H)return;
            D.document.focus();
            D.focus();
            if (D.cg.inUrlPopup)try {
                F.push(new l(a.oC.getWindow().$.opener.document));
            } catch (I) {
            }
            w(D, E);
            x(D, E, F);
            for (G = 0; G < F.length; G += 1)F[G].bH().$.onbeforeunload = F[G].getWindow().$.onunload = F[G].getWindow().$.onbeforeunload = function () {
                var J = D.element && D.element.getDocument().getWindow().$;
                if (!J.closed) J.close();
            };
        }, z = function (D) {
            a.lang.load(D.config.language, D.config.defaultLanguage, function (E, F) {
                D.langCode = E;
                D.lang = k.prototypedCopy(F);
                D.lB = (function () {
                    var G = "['" + D.lang.DateAmPm.join("','") + "']", H = D.lang.DateTime.replace(/dd|mm|yyyy|hh|HH|MM|aa|d|m|yy|h|H|M|a/g, function (I) {
                        var J;
                        switch (I) {
                            case 'd':
                                J = "day.replace(/^0/,'')";
                                break;
                            case 'dd':
                                J = 'day';
                                break;
                            case 'm':
                                J = "month.replace(/^0/,'')";
                                break;
                            case 'mm':
                                J = 'month';
                                break;
                            case 'yy':
                                J = 'year.substr(2)';
                                break;
                            case 'yyyy':
                                J = 'year';
                                break;
                            case 'H':
                                J = "hour.replace(/^0/,'')";
                                break;
                            case 'HH':
                                J = 'hour';
                                break;
                            case 'h':
                                J = "( hour < 12 ? hour : ( ( hour - 12 ) + 100 ).toString().substr( 1 ) ).replace(/^0/,'')";
                                break;
                            case 'hh':
                                J = '( hour < 12 ? hour : ( ( hour - 12 ) + 100 ).toString().substr( 1 ) )';
                                break;
                            case 'M':
                                J = "minute.replace(/^0/,'')";
                                break;
                            case 'MM':
                                J = 'minute';
                                break;
                            case 'a':
                                J = G + '[ hour < 12 ? 0 : 1 ].charAt(0)';
                                break;
                            case 'aa':
                                J = G + '[ hour < 12 ? 0 : 1 ]';
                                break;
                            default:
                                J = "'" + I + "'";
                        }
                        return "'," + J + ",'";
                    });
                    H = "'" + H + "'";
                    H = H.replace(/('',)|,''$/g, '');
                    return new Function('day', 'month', 'year', 'hour', 'minute', 'return [' + H + "].join('');");
                })();
                if (h.gecko && h.version < 10900 && D.lang.dir == 'rtl') D.lang.dir = 'ltr';
                A(D);
            });
        }, A = function (D) {
            var E = D.config, F = E.plugins, G = E.extraPlugins, H = E.removePlugins;
            if (G) {
                var I = new RegExp('(?:^|,)(?:' + G.replace(/\s*,\s*/g, '|') + ')(?=,|$)', 'g');
                F = F.replace(I, '');
                F += ',' + G;
            }
            if (H) {
                I = new RegExp('(?:^|,)(?:' + H.replace(/\s*,\s*/g, '|') + ')(?=,|$)', 'g');
                F = F.replace(I, '');
            }
            o.load(F.split(','), function (J) {
                var K = [], L = [], M = [], N;
                if (D.config.readOnly)for (var N in J) {
                    if (J[N].readOnly === false) delete J[N];
                }
                D.plugins = J;
                for (N in J) {
                    var O = J[N], P = O.lang, Q = o.getPath(N), R = null;
                    J[N].name = N;
                    O.pathName = Q;
                    if (P) {
                        R = k.indexOf(P, D.langCode) >= 0 ? D.langCode : P[0];
                        if (!O.lang[R]) M.push(a.getUrl(Q + 'lang/' + R + '.js')); else {
                            k.extend(D.lang, O.lang[R]);
                            R = null;
                        }
                    }
                    L.push(R);
                    K.push(O);
                }
                a.scriptLoader.load(M, function () {
                    var S = ['eK', 'bz', 'gr'];
                    for (var T = 0; T < S.length; T++)for (var U = 0; U < K.length; U++) {
                        var V = K[U];
                        if (T === 0 && L[U] && V.lang) k.extend(D.lang, V.lang[L[U]]);
                        if (V[S[T]]) {
                            a.log('[PLUGIN] ' + V.name + '.' + S[T]);
                            V[S[T]](D);
                        }
                    }
                    D.oW('pluginsLoaded');
                    B(D);
                });
            });
        }, B = function (D) {
            a.skins.load(D, 'application', function () {
                a.skins.load(D, 'host', function () {
                    C(D);
                });
            });
        }, C = function (D) {
            var E = D.config.theme;
            a.gc.load(E, function () {
                var F = D.theme = a.gc.eB(E);
                F.pathName = a.gc.getPath(E);
                D.oW('themeAvailable');
            });
        };
        a.application.prototype.iI = function (D) {
            var E = m.eB(this._.element), F = this._.instanceConfig;
            delete this._.element;
            delete this._.instanceConfig;
            this._.ky = {};
            this._.gS = [];
            E.getDocument().getWindow().$.CKFinder = D;
            this.element = E;
            this.document = null;
            this.rQ = {};
            this.name = r();
            if (this.name in a.instances)throw '[CKFINDER.application] The instance "' + this.name + '" already exists.';
            this.config = k.prototypedCopy(n);
            this.bY = new p(this);
            this.fs = new a.fs(this);
            this.aL = {};
            this.ld = {};
            this.on('uiReady', function (G) {
                var I = this;
                var H = I.document.getWindow();
                H.on('lW', I.destroy, I);
                if (I.cg.inPopup) y(I, H);
            }, this);
            this.cg = new d(this);
            this.on('configLoaded', function (G) {
                var H = this;
                e(H.cg, H, H.config.callback);
                H.id = H.config.id;
            }, this);
            u(this, F);
            a.oW('instanceCreated', null, this);
        };
    })();
    k.extend(a.application.prototype, {
        bD: function (q, r) {
            return this._.ky[q] = new a.command(this, r);
        }, destroy: function () {
            var q = this;
            q.theme.destroy(q);
            q.oW('destroy');
            a.remove(q);
        }, execCommand: function (q, r) {
            a.log('[COMMAND] ' + q);
            var s = this.cS(q), t = {name: q, rm: r, command: s};
            if (s && s.bu != a.aY)if (this.oW('beforeCommandExec', t) !== true) {
                t.returnValue = s.exec(t.rm);
                if (!s.async && this.oW('afterCommandExec', t) !== true)return t.returnValue;
            }
            return false;
        }, cS: function (q) {
            return this._.ky[q];
        }, ox: function () {
            var q = Math.round(new Date().getTime() / 1000), r = k.getCookie('CKFinder_UTime'), s = decodeURIComponent(k.getCookie('CKFinder_UId'));
            if (s && r && s == (this.id ? this.id : location.href) && Math.abs(q - r) < 5)return 1;
            return 0;
        }, bs: ''
    });
    (function () {
        var q = '';
        for (var r = 49; r < 58; r++)q += String.fromCharCode(r);
        for (r = 65; r < 91; r++) {
            if (r == 73 || r == 79)continue;
            q += String.fromCharCode(r);
        }
        a.bs = q;
        a.nd = "\154\x6f";
        a.jG = "\x68\157";
        a.hf = new window["\x52\145\x67\x45\x78\x70"]("\136\167\167\167\x5c\x2e");
        a.hg = new window["\x52\x65\x67\x45\x78\160"]("\072\x5c\144\053\044");
        a.lS = function (s) {
            return s.toLowerCase().replace(a.hf, '').replace(a.hg, '');
        };
    })();
    a.on('loaded', function () {
        var q = a.application.eb;
        if (q) {
            delete a.application.eb;
            for (var r = 0; r < q.length; r++)q[r].iI();
        }
    });
    delete a.dO;
    a.instances = {};
    a.document = new l(document);
    a.oC = a.document.getWindow().$ != a.document.getWindow().$.top ? new l(a.document.getWindow().$.top.document) : a.document;
    a.add = function (q) {
        a.instances[q.name] = q;
        a.jt = q;
        q.on('focus', function () {
            if (a.nG != q) {
                a.nG = q;
                a.oW('nG');
            }
        });
        q.on('blur', function () {
            if (a.nG == q) {
                a.nG = null;
                a.oW('nG');
            }
        });
    };
    a.remove = function (q) {
        delete a.instances[q.name];
    };
    a.aL = {};
    a.eV = 1;
    a.aS = 2;
    a.aY = 0;
    a.bF = '';
    (function () {
        function q(t, u) {
            return t + '.' + (u.name || u || t);
        };
        a.ld = {
            bX: {}, hS: function (t, u, v) {
                var w = q(t, u);
                if (this.bX[w] !== undefined)throw '[CKFINDER] Widget ' + w + ' already bX!';
                a.log('[WIDGET] bX ' + w);
                this.bX[w] = new s(w, v);
                return this.bX[w];
            }, bz: function (t, u, v, w, x) {
                var y = q(u, v), z = this.bX[y], A = k.deepCopy(z.hF), B = function (E, F, G) {
                    this.app = E;
                    this.eh = F instanceof m ? F : new m(F);
                    this.hF = A ? k.extend(A, G) : G || {};
                    this._ = {};
                    var H = function (K) {
                        this.ib = K;
                    };
                    H.prototype = this.tools;
                    this.tools = new H(this);
                    var I = z.dT;
                    if (I.length)for (var J = 0; J < I.length; J++)I[J].call(this, E, this);
                };
                B.prototype = z;
                var C = new B(t, w, x);
                for (var D in C.fw) {
                    if (C.fw[D].readOnly && t.config.readOnly) C.ke(D); else C.gA(D);
                }
                if (t.ld[y])throw '[CKFINDER Widget ' + y + ' already initiated.';
                t.ld[y] = C;
                a.log('[WIDGET] instanced ' + y);
                return C;
            }
        };
        var r = {
            click: 1,
            mouseover: 1,
            mouseout: 1,
            focus: 1,
            blur: 1,
            submit: 1,
            dblclick: 1,
            mousedown: 1,
            mouseup: 1,
            mousemove: 1,
            keypress: 1,
            keydown: 1,
            keyup: 1,
            load: 1,
            lW: 1,
            abort: 1,
            error: 1,
            resize: 1,
            scroll: 1,
            select: 1,
            change: 1,
            reset: 1
        }, s = function (t, u) {
            var v = this;
            v.id = t;
            v.readOnly = true;
            v.fw = {};
            v.hF = u || {};
            v.dT = [];
            v.tools = new v.tools(v);
        };
        s.prototype = {
            gA: function (t) {
                var y = this;
                a.log('[WIDGET] Enabling behavior ' + t);
                var u = y.fw[t];
                if (!u)return;
                var v = y;
                for (var w = 0; w < u.cC.length; w++) {
                    var x = u.cC[w];
                    if (r[x]) y.eh.on(x, u.fO, v); else {
                        y.on(x, u.fO, v);
                        y.app.on(x, u.fO, v);
                    }
                }
            }, ke: function (t) {
                a.log('[WIDGET] Disabling behavior ' + t);
                var u = this.fw[t];
                if (!u)return;
                for (var v = 0; v < u.cC.length; v++) {
                    var w = u.cC[v];
                    if (r[w]) this.eh.removeListener(w, u.fO); else this.removeListener(w, u.fO);
                }
            }, bh: function (t, u, v, w) {
                if (!k.isArray(u)) u = [u];
                this.fw[t] = {cC: u, fO: v, readOnly: w === false};
                if (this.eh) this.gA(t);
            }, removeBehavior: function (t) {
                delete this.fw[t];
            }, ur: function () {
                return this.fw;
            }, bn: function () {
                return this.eh;
            }, oE: function () {
                return this.hF;
            }, data: function () {
                return this.hF;
            }, tools: function () {
            }
        };
        s.prototype.tools.prototype = {
            kg: function (t) {
                if (t.target == this.ib.eh)return 1;
            }
        };
        a.event.du(s.prototype);
    })();
    a.xml = function (q) {
        var r = null;
        if (typeof q == 'object') r = q; else {
            var s = (q || '').replace(/&nbsp;/g, '\xa0');
            if (window.DOMParser) r = new DOMParser().parseFromString(s, 'text/xml'); else if (window.ActiveXObject) {
                try {
                    r = new ActiveXObject('MSXML2.DOMDocument');
                } catch (t) {
                    try {
                        r = new ActiveXObject('Microsoft.XmlDom');
                    } catch (t) {
                    }
                }
                if (r) {
                    r.async = false;
                    r.resolveExternals = false;
                    r.validateOnParse = false;
                    r.loadXML(s);
                }
            }
        }
        this.mq = r;
    };
    a.xml.prototype = {
        selectSingleNode: function (q, r) {
            var s = this.mq;
            if (r || (r = s))if ('selectSingleNode' in r)return r.selectSingleNode(q); else if (s.evaluate) {
                var t = s.evaluate(q, r, null, 9, null);
                return t && t.singleNodeValue || null;
            } else if (r.querySelectorAll) {
                var u = this.selectNodes(q, r);
                if (u.length == 1) {
                    var t = q.match(/\/@(.*$)/);
                    if (t)return u[0].getAttributeNode(t[1]); else return u[0];
                }
            } else alert('XPath is not supported in your browser');
            return null;
        }, selectNodes: function (q, r) {
            var s = this.mq, t = [];
            if (r || (r = s))if ('selectNodes' in r)return r.selectNodes(q); else if (s.evaluate) {
                var u = s.evaluate(q, r, null, 5, null);
                if (u) {
                    var v;
                    while (v = u.iterateNext())t.push(v);
                }
            } else if (r.querySelectorAll) {
                var w = q.replace(/\/@(.*$)/, '[$1]').replace(/\//gi, '>');
                return r.querySelectorAll(w);
            } else alert('XPath is not supported in your browser');
            return t;
        }, vB: function (q, r) {
            var s = this.selectSingleNode(q, r), t = [];
            if (s) {
                s = s.firstChild;
                while (s) {
                    if (s.xml) t.push(s.xml); else if (window.XMLSerializer) t.push(new XMLSerializer().serializeToString(s));
                    s = s.nextSibling;
                }
            }
            return t.length ? t.join('') : null;
        }
    };
    (function () {
        var q = {
            address: 1,
            tY: 1,
            dl: 1,
            h1: 1,
            h2: 1,
            h3: 1,
            h4: 1,
            h5: 1,
            h6: 1,
            p: 1,
            pre: 1,
            li: 1,
            dt: 1,
            de: 1
        }, r = {body: 1, div: 1, table: 1, tbody: 1, tr: 1, td: 1, th: 1, caption: 1, form: 1}, s = function (t) {
            var u = t.getChildren();
            for (var v = 0, w = u.count(); v < w; v++) {
                var x = u.getItem(v);
                if (x.type == a.cv && a.ga.um[x.getName()])return true;
            }
            return false;
        };
        j.qS = function (t) {
            var z = this;
            var u = null, v = null, w = [], x = t;
            while (x) {
                if (x.type == a.cv) {
                    if (!z.qH) z.qH = x;
                    var y = x.getName();
                    if (i && x.$.scopeName != 'HTML') y = x.$.scopeName.toLowerCase() + ':' + y;
                    if (!v) {
                        if (!u && q[y]) u = x;
                        if (r[y])if (!u && y == 'div' && !s(x)) u = x; else v = x;
                    }
                    w.push(x);
                    if (y == 'body')break;
                }
                x = x.getParent();
            }
            z.block = u;
            z.tX = v;
            z.elements = w;
        };
    })();
    j.qS.prototype = {
        sJ: function (q) {
            var r = this.elements, s = q && q.elements;
            if (!s || r.length != s.length)return false;
            for (var t = 0; t < r.length; t++) {
                if (!r[t].equals(s[t]))return false;
            }
            return true;
        }
    };
    j.text = function (q, r) {
        if (typeof q == 'string') q = (r ? r.$ : document).createTextNode(q);
        this.$ = q;
    };
    j.text.prototype = new j.bi();
    k.extend(j.text.prototype, {
        type: a.fl, hJ: function () {
            return this.$.nodeValue.length;
        }, getText: function () {
            return this.$.nodeValue;
        }, split: function (q) {
            var v = this;
            if (i && q == v.hJ()) {
                var r = v.getDocument().jT('');
                r.kB(v);
                return r;
            }
            var s = v.getDocument(), t = new j.text(v.$.splitText(q), s);
            if (h.ie8) {
                var u = new j.text('', s);
                u.kB(t);
                u.remove();
            }
            return t;
        }, substring: function (q, r) {
            if (typeof r != 'number')return this.$.nodeValue.substr(q); else return this.$.nodeValue.substring(q, r);
        }
    });
    j.pa = function (q) {
        q = q || a.document;
        this.$ = q.$.createDocumentFragment();
    };
    k.extend(j.pa.prototype, m.prototype, {
        type: a.om, kA: function (q) {
            q = q.$;
            q.parentNode.insertBefore(this.$, q.nextSibling);
        }
    }, true, {
        append: 1,
        pd: 1,
        getFirst: 1,
        dB: 1,
        appendTo: 1,
        jg: 1,
        insertBefore: 1,
        kA: 1,
        replace: 1,
        trim: 1,
        type: 1,
        ltrim: 1,
        rtrim: 1,
        getDocument: 1,
        iu: 1,
        getChild: 1,
        getChildren: 1
    });
    (function () {
        function q(u, v) {
            if (this._.end)return null;
            var w, x = this.mk, y, z = this.vR, A = this.type, B = u ? 'getPreviousSourceNode' : 'getNextSourceNode';
            if (!this._.start) {
                this._.start = 1;
                x.trim();
                if (x.collapsed) {
                    this.end();
                    return null;
                }
            }
            if (!u && !this._.kp) {
                var C = x.endContainer, D = C.getChild(x.endOffset);
                this._.kp = function (H, I) {
                    return (!I || !C.equals(H)) && (!D || !H.equals(D)) && (H.type != a.cv || H.getName() != 'body');
                };
            }
            if (u && !this._.ka) {
                var E = x.startContainer, F = x.startOffset > 0 && E.getChild(x.startOffset - 1);
                this._.ka = function (H, I) {
                    return (!I || !E.equals(H)) && (!F || !H.equals(F)) && (H.type != a.cv || H.getName() != 'body');
                };
            }
            var G = u ? this._.ka : this._.kp;
            if (z) y = function (H, I) {
                if (G(H, I) === false)return false;
                return z(H);
            }; else y = G;
            if (this.current) w = this.current[B](false, A, y); else if (u) {
                w = x.endContainer;
                if (x.endOffset > 0) {
                    w = w.getChild(x.endOffset - 1);
                    if (y(w) === false) w = null;
                } else w = y(w) === false ? null : w.hZ(true, A, y);
            } else {
                w = x.startContainer;
                w = w.getChild(x.startOffset);
                if (w) {
                    if (y(w) === false) w = null;
                } else w = y(x.startContainer) === false ? null : x.startContainer.hL(true, A, y);
            }
            while (w && !this._.end) {
                this.current = w;
                if (!this.lf || this.lf(w) !== false) {
                    if (!v)return w;
                } else if (v && this.lf)return false;
                w = w[B](false, A, y);
            }
            this.end();
            return this.current = null;
        };
        function r(u) {
            var v, w = null;
            while (v = q.call(this, u))w = v;
            return w;
        };
        j.gm = k.createClass({
            $: function (u) {
                this.mk = u;
                this._ = {};
            }, ej: {
                end: function () {
                    this._.end = 1;
                }, next: function () {
                    return q.call(this);
                }, previous: function () {
                    return q.call(this, true);
                }, sC: function () {
                    return q.call(this, false, true) !== false;
                }, sD: function () {
                    return q.call(this, true, true) !== false;
                }, uF: function () {
                    return r.call(this);
                }, uB: function () {
                    return r.call(this, true);
                }, reset: function () {
                    delete this.current;
                    this._ = {};
                }
            }
        });
        var s = {
            block: 1,
            'list-item': 1,
            table: 1,
            'table-row-group': 1,
            'table-header-group': 1,
            'table-footer-group': 1,
            'table-row': 1,
            'table-column-group': 1,
            'table-column': 1,
            'table-cell': 1,
            'table-caption': 1
        }, t = {hr: 1};
        m.prototype.qy = function (u) {
            var v = k.extend({}, t, u || {});
            return s[this.getComputedStyle('display')] || v[this.getName()];
        };
        j.gm.pQ = function (u) {
            return function (v, w) {
                return !(v.type == a.cv && v.qy(u));
            };
        };
        j.gm.us = function () {
            return this.pQ({br: 1});
        };
        j.gm.tU = function (u) {
        }, j.gm.tW = function (u, v) {
            function w(x) {
                return x && x.getName && x.getName() == 'span' && x.hasAttribute('_fck_bookmark');
            };
            return function (x) {
                var y, z;
                y = x && !x.getName && (z = x.getParent()) && w(z);
                y = u ? y : y || w(x);
                return v ^ y;
            };
        };
        j.gm.sf = function (u) {
            return function (v) {
                var w = v && v.type == a.fl && !k.trim(v.getText());
                return u ^ w;
            };
        };
    })();
    (function () {
        if (h.webkit) {
            h.hc = false;
            return;
        }
        var q = m.kE('<div style="width:0px;height:0px;position:absolute;left:-10000px;border:1px solid;border-color:red blue;"></div>', a.document);
        q.appendTo(a.document.getHead());
        try {
            h.hc = q.getComputedStyle('border-top-color') == q.getComputedStyle('border-right-color');
        } catch (r) {
            h.hc = false;
        }
        if (h.hc) h.cssClass += ' cke_hc';
        q.remove();
    })();
    o.load(n.pO.split(','), function () {
        a.status = 'loaded';
        a.oW('loaded');
        var q = a._.io;
        if (q) {
            delete a._.io;
            for (var r = 0; r < q.length; r++)a.add(q[r]);
        }
    });
    if (i)try {
        document.execCommand('BackgroundImageCache', false, true);
    } catch (q) {
    }
    CKFinder.lang.en = {
        appTitle: 'CKFinder',
        common: {
            unavailable: '%1<span class="cke_accessibility">, unavailable</span>',
            confirmCancel: 'Some of the options were changed. Are you sure you want to close the dialog window?',
            ok: 'OK',
            cancel: 'Cancel',
            confirmationTitle: 'Confirmation',
            messageTitle: 'Information',
            inputTitle: 'Question',
            undo: 'Undo',
            redo: 'Redo',
            skip: 'Skip',
            skipAll: 'Skip all',
            makeDecision: 'What action should be taken?',
            rememberDecision: 'Remember my decision'
        },
        dir: 'ltr',
        HelpLang: 'en',
        LangCode: 'en',
        DateTime: 'm/d/yyyy h:MM aa',
        DateAmPm: ['AM', 'PM'],
        FoldersTitle: 'Folders',
        FolderLoading: 'Loading...',
        FolderNew: 'Please type the new folder name: ',
        FolderRename: 'Please type the new folder name: ',
        FolderDelete: 'Are you sure you want to delete the "%1" folder?',
        FolderRenaming: ' (Renaming...)',
        FolderDeleting: ' (Deleting...)',
        DestinationFolder: 'Destination Folder',
        FileRename: 'Please type the new file name: ',
        FileRenameExt: 'Are you sure you want to change the file extension? The file may become unusable.',
        FileRenaming: 'Renaming...',
        FileDelete: 'Are you sure you want to delete the file "%1"?',
        FilesDelete: 'Are you sure you want to delete %1 files?',
        FilesLoading: 'Loading...',
        FilesEmpty: 'The folder is empty.',
        DestinationFile: 'Destination File',
        SkippedFiles: 'List of skipped files:',
        BasketFolder: 'Basket',
        BasketClear: 'Clear Basket',
        BasketRemove: 'Remove from Basket',
        BasketOpenFolder: 'Open Parent Folder',
        BasketTruncateConfirm: 'Do you really want to remove all files from the basket?',
        BasketRemoveConfirm: 'Do you really want to remove the file "%1" from the basket?',
        BasketRemoveConfirmMultiple: 'Do you really want to remove %1 files from the basket?',
        BasketEmpty: 'No files in the basket, drag and drop some.',
        BasketCopyFilesHere: 'Copy Files from Basket',
        BasketMoveFilesHere: 'Move Files from Basket',
        OperationCompletedSuccess: 'Operation completed successfully.',
        OperationCompletedErrors: 'Operation completed with errors.',
        FileError: '%s: %e',
        MovedFilesNumber: 'Number of files moved: %s.',
        CopiedFilesNumber: 'Number of files copied: %s.',
        MoveFailedList: 'The following files could not be moved:<br />%s',
        CopyFailedList: 'The following files could not be copied:<br />%s',
        Upload: 'Upload',
        UploadTip: 'Upload New File',
        Refresh: 'Refresh',
        Settings: 'Settings',
        Help: 'Help',
        HelpTip: 'Help',
        Select: 'Select',
        SelectThumbnail: 'Select Thumbnail',
        View: 'View',
        Download: 'Download',
        NewSubFolder: 'New Subfolder',
        Rename: 'Rename',
        Delete: 'Delete',
        DeleteFiles: 'Delete Files',
        CopyDragDrop: 'Copy Here',
        MoveDragDrop: 'Move Here',
        RenameDlgTitle: 'Rename',
        NewNameDlgTitle: 'New Name',
        FileExistsDlgTitle: 'File Already Exists',
        SysErrorDlgTitle: 'System Error',
        FileOverwrite: 'Overwrite',
        FileAutorename: 'Auto-rename',
        ManuallyRename: 'Manually rename',
        OkBtn: 'OK',
        CancelBtn: 'Cancel',
        CloseBtn: 'Close',
        UploadTitle: 'Upload New File',
        UploadSelectLbl: 'Select a file to upload',
        UploadProgressLbl: '(Upload in progress, please wait...)',
        UploadBtn: 'Upload Selected File',
        UploadBtnCancel: 'Cancel',
        UploadNoFileMsg: 'Please select a file from your computer.',
        UploadNoFolder: 'Please select a folder before uploading.',
        UploadNoPerms: 'File upload not allowed.',
        UploadUnknError: 'Error sending the file.',
        UploadExtIncorrect: 'File extension not allowed in this folder.',
        UploadLabel: 'Files to Upload',
        UploadTotalFiles: 'Total Files:',
        UploadTotalSize: 'Total Size:',
        UploadSend: 'Upload',
        UploadAddFiles: 'Add Files',
        UploadClearFiles: 'Clear Files',
        UploadCancel: 'Cancel Upload',
        UploadRemove: 'Remove',
        UploadRemoveTip: 'Remove !f',
        UploadUploaded: 'Uploaded !n%',
        UploadProcessing: 'Processing...',
        SetTitle: 'Settings',
        SetView: 'View:',
        SetViewThumb: 'Thumbnails',
        SetViewList: 'List',
        SetDisplay: 'Display:',
        SetDisplayName: 'File Name',
        SetDisplayDate: 'Date',
        SetDisplaySize: 'File Size',
        SetSort: 'Sorting:',
        SetSortName: 'by File Name',
        SetSortDate: 'by Date',
        SetSortSize: 'by Size',
        SetSortExtension: 'by Extension',
        FilesCountEmpty: '<Empty Folder>',
        FilesCountOne: '1 file',
        FilesCountMany: '%1 files',
        Kb: '%1 KB',
        Mb: '%1 MB',
        Gb: '%1 GB',
        SizePerSecond: '%1/s',
        ErrorUnknown: 'It was not possible to complete the request. (Error %1)',
        Errors: {
            10: 'Invalid command.',
            11: 'The resource type was not specified in the request.',
            12: 'The requested resource type is not valid.',
            102: 'Invalid file or folder name.',
            103: 'It was not possible to complete the request due to authorization restrictions.',
            104: 'It was not possible to complete the request due to file system permission restrictions.',
            105: 'Invalid file extension.',
            109: 'Invalid request.',
            110: 'Unknown error.',
            111: 'It was not possible to complete the request due to resulting file size.',
            115: 'A file or folder with the same name already exists.',
            116: 'Folder not found. Please refresh and try again.',
            117: 'File not found. Please refresh the files list and try again.',
            118: 'Source and target paths are equal.',
            201: 'A file with the same name is already available. The uploaded file was renamed to "%1".',
            202: 'Invalid file.',
            203: 'Invalid file. The file size is too big.',
            204: 'The uploaded file is corrupt.',
            205: 'No temporary folder is available for upload in the server.',
            206: 'Upload cancelled due to security reasons. The file contains HTML-like data.',
            207: 'The uploaded file was renamed to "%1".',
            300: 'Moving file(s) failed.',
            301: 'Copying file(s) failed.',
            500: 'The file browser is disabled for security reasons. Please contact your system administrator and check the CKFinder configuration file.',
            501: 'The thumbnails support is disabled.'
        },
        ErrorMsg: {
            FileEmpty: 'The file name cannot be empty.',
            FileExists: 'File %s already exists.',
            FolderEmpty: 'The folder name cannot be empty.',
            FolderExists: 'Folder %s already exists.',
            FolderNameExists: 'Folder already exists.',
            FileInvChar: 'The file name cannot contain any of the following characters: \n\\ / : * ? " < > |',
            FolderInvChar: 'The folder name cannot contain any of the following characters: \n\\ / : * ? " < > |',
            PopupBlockView: 'It was not possible to open the file in a new window. Please configure your browser and disable all popup blockers for this site.',
            XmlError: 'It was not possible to properly load the XML response from the web server.',
            XmlEmpty: 'It was not possible to load the XML response from the web server. The server returned an empty response.',
            XmlRawResponse: 'Raw response from the server: %s'
        },
        Imageresize: {
            dialogTitle: 'Resize %s',
            sizeTooBig: 'Cannot set image height or width to a value bigger than the original size (%size).',
            resizeSuccess: 'Image resized successfully.',
            thumbnailNew: 'Create a new thumbnail',
            thumbnailSmall: 'Small (%s)',
            thumbnailMedium: 'Medium (%s)',
            thumbnailLarge: 'Large (%s)',
            newSize: 'Set a new size',
            width: 'Width',
            height: 'Height',
            invalidHeight: 'Invalid height.',
            invalidWidth: 'Invalid width.',
            invalidName: 'Invalid file name.',
            newImage: 'Create a new image',
            noExtensionChange: 'File extension cannot be changed.',
            imageSmall: 'Source image is too small.',
            contextMenuName: 'Resize',
            lockRatio: 'Lock ratio',
            resetSize: 'Reset size'
        },
        Fileeditor: {
            save: 'Save',
            fileOpenError: 'Unable to open file.',
            fileSaveSuccess: 'File saved successfully.',
            contextMenuName: 'Edit',
            loadingFile: 'Loading file, please wait...'
        },
        Maximize: {maximize: 'Maximize', minimize: 'Minimize'},
        Gallery: {current: 'Image {current} of {total}'},
        Zip: {
            extractHereLabel: 'Extract here',
            extractToLabel: 'Extract to...',
            downloadZipLabel: 'Download as zip',
            compressZipLabel: 'Compress to zip',
            removeAndExtract: 'Remove existing and extract',
            extractAndOverwrite: 'Extract overwriting existing files',
            extractSuccess: 'File extracted successfully.'
        },
        Search: {searchPlaceholder: 'Search'}
    };
    (function () {
        var r = 1, s = 2, t = 4, u = 8, v = 16, w = 32, x = 64, y = 128;
        a.aL.Acl = function (z) {
            var A = this;
            if (!z) z = 0;
            A.folderView = (z & r) == r;
            A.folderCreate = (z & s) == s;
            A.folderRename = (z & t) == t;
            A.folderDelete = (z & u) == u;
            A.fileView = (z & v) == v;
            A.fileUpload = (z & w) == w;
            A.fileRename = (z & x) == x;
            A.fileDelete = (z & y) == y;
        };
        o.add('acl');
    })();
    (function () {
        o.add('connector', {
            bM: ['csrftokenmanager'], bz: function (s) {
                s.on('appReady', function () {
                    s.connector = new a.aL.Connector(s);
                    var t = s.config.resourceType, u = t ? {type: t} : null;
                    s.connector.sendCommand('Init', u, function (v) {
                        var w;
                        if (v.checkError())return;
                        var x = "\103\157\x6e\x6e\145\x63\x74\x6f\162\x2f\x43\x6f\x6e\x6e\145\x63\164\157\x72\111\x6e\146\x6f\x2f";
                        a.ed = v.selectSingleNode(x + "\x40\163").value;
                        a.bF = v.selectSingleNode(x + "\x40\143").value + '----';
                        s.config.thumbsEnabled = v.selectSingleNode(x + "\x40\x74\150\x75\155\142\x73\x45\156\141\x62\x6c\x65\x64").value == 'true';
                        s.config.thumbsDirectAccess = false;
                        if (s.config.thumbsEnabled) {
                            w = v.selectSingleNode(x + "\100\164\x68\x75\155\142\x73\125\x72\154");
                            if (w) s.config.thumbsUrl = w.value;
                            w = v.selectSingleNode(x + "\100\x74\x68\x75\x6d\x62\x73\x44\151\x72\145\x63\164\101\x63\143\x65\163\x73");
                            if (w) s.config.thumbsDirectAccess = w.value == 'true';
                            w = v.selectSingleNode(x + "\100\x74\x68\x75\155\142\x73\127\x69\x64\164\150");
                            s.config.thumbsWidth = (w ? parseInt(w.value, 10) : 100) || 100;
                            w = v.selectSingleNode(x + "\x40\x74\150\165\155\142\x73\110\145\151\x67\x68\x74");
                            s.config.thumbsHeight = (w ? parseInt(w.value, 10) : 100) || 100;
                        } else {
                            s.config.thumbsWidth = 100;
                            s.config.thumbsHeight = 100;
                        }
                        s.config.imagesMaxWidth = parseInt(v.selectSingleNode(x + "\100\x69\155\147\127\151\144\x74\x68").value, 10);
                        s.config.imagesMaxHeight = parseInt(v.selectSingleNode(x + "\x40\x69\x6d\147\x48\x65\x69\x67\150\164").value, 10);
                        w = v.selectSingleNode(x + "\100\x75\160\154\157\x61\144\115\141\170\x53\x69\x7a\145");
                        s.config.uploadMaxSize = w ? parseInt(w.value, 10) : 0;
                        w = v.selectSingleNode(x + "\x40\x75\160\154\x6f\141\x64\103\x68\145\143\153\111\x6d\141\x67\145\163");
                        s.config.uploadCheckImages = w ? w.value == 'true' : false;
                        w = v.selectSingleNode(x + "\100\143\x73\x72\146\x50\162\157\x74\x65\x63\164\x69\x6f\156");
                        s.config.csrfProtection = w ? w.value == 'true' : false;
                        var y = v.selectSingleNode(x + "\100\x70\x6c\x75\147\x69\156\x73"), z = y && y.value;
                        if (z && z.length) o.load(z.split(','), function (A) {
                            var B = [], C = [], D = [];
                            for (var E in A) {
                                var F = A[E], G = F.lang, H = o.getPath(E), I = null;
                                if (!s.plugins[E]) s.plugins[E] = A[E]; else continue;
                                A[E].name = E;
                                F.pathName = H;
                                if (G) {
                                    I = k.indexOf(G, s.langCode) >= 0 ? s.langCode : G[0];
                                    if (!F.lang[I]) D.push(a.getUrl(H + 'lang/' + I + '.js')); else {
                                        k.extend(s.lang, F.lang[I]);
                                        I = null;
                                    }
                                }
                                C.push(I);
                                B.push(F);
                            }
                            a.scriptLoader.load(D, function () {
                                var J = ['eK', 'bz', 'gr'];
                                for (var K = 0; K < J.length; K++)for (var L = 0; L < B.length; L++) {
                                    var M = B[L];
                                    if (K === 0 && C[L] && M.lang) k.extend(s.lang, M.lang[C[L]]);
                                    if (M[J[K]]) {
                                        a.log('[PLUGIN] ' + M.name + '.' + J[K]);
                                        M[J[K]](s);
                                    }
                                }
                                s.cr('uiReady');
                                s.cr('appReady');
                                s.oW('pluginsLoaded', {step: 2, jN: s.connector});
                                s.cr('connectorInitialized', {xml: v});
                            });
                        }); else {
                            s.oW('pluginsLoaded', {step: 2, jN: s.connector});
                            s.cr('connectorInitialized', {xml: v});
                        }
                    });
                });
            }
        });
        a.aL.Connector = function (s) {
            this.app = s;
            var t = s.config.connectorLanguage || 'java';
            if (s.config.connectorPath) this.oN = s.config.connectorPath; else this.oN = a.basePath + 'core/connector/' + t + '/connector.' + t;
        };
        a.aL.Connector.prototype = {
            ERROR_NONE: 0,
            ERROR_CUSTOMERROR: 1,
            ERROR_INVALIDCOMMAND: 10,
            ERROR_TYPENOTSPECIFIED: 11,
            ERROR_INVALIDTYPE: 12,
            ERROR_INVALIDNAME: 102,
            ERROR_UNAUTHORIZED: 103,
            ERROR_ACCESSDENIED: 104,
            ERROR_INVALIDEXTENSION: 105,
            ERROR_INVALIDREQUEST: 109,
            ERROR_UNKNOWN: 110,
            ERROR_ALREADYEXIST: 115,
            ERROR_FOLDERNOTFOUND: 116,
            ERROR_FILENOTFOUND: 117,
            ERROR_SOURCE_AND_TARGET_PATH_EQUAL: 118,
            ERROR_UPLOADEDFILERENAMED: 201,
            ERROR_UPLOADEDINVALID: 202,
            ERROR_UPLOADEDTOOBIG: 203,
            ERROR_UPLOADEDCORRUPT: 204,
            ERROR_UPLOADEDNOTMPDIR: 205,
            ERROR_UPLOADEDWRONGHTMLFILE: 206,
            ERROR_UPLOADEDINVALIDNAMERENAMED: 207,
            ERROR_MOVE_FAILED: 300,
            ERROR_COPY_FAILED: 301,
            ERROR_CONNECTORDISABLED: 500,
            ERROR_THUMBNAILSDISABLED: 501,
            currentFolderUrl: function () {
                if (this.app.aV)return this.app.aV.getUrl();
            },
            currentType: function () {
                if (this.app.aV)return this.app.aV.type;
            },
            currentTypeHash: function () {
                if (this.app.aV)return a.getResourceType(this.app.aV.type).hash;
            },
            currentResourceType: function () {
                return a.getResourceType(this.currentType());
            },
            sendCommand: function (s, t, u, v, w) {
                var x = this.composeUrl(s, t, v, w), y = this;
                if (u)return a.ajax.loadXml(x, function (z) {
                    z.hy = y.app;
                    y.app.oW('connectorResponse', {xml: z});
                    u(k.extend(z, r));
                }); else return a.ajax.loadXml(x, function (z) {
                    y.app.oW('connectorResponse', {xml: z});
                });
            },
            sendCommandPost: function (s, t, u, v, w, x) {
                var y = this.composeUrl(s, t, w, x), z = this;
                if (!u) u = {};
                u.ckCsrfToken = a.getCsrfToken();
                u.CKFinderCommand = true;
                if (v)return a.ajax.loadXml(y, function (A) {
                    A.hy = z.app;
                    z.app.oW('connectorResponse', {xml: A});
                    v(k.extend(A, r));
                }, this.composeUrlParams(u)); else return a.ajax.loadXml(y, function (A) {
                    z.app.oW('connectorResponse', {xml: A});
                }, this.composeUrlParams(u));
            },
            composeUrl: function (s, t, u, v) {
                var z = this;
                var w = z.oN + '?command=' + encodeURIComponent(s);
                if (s != 'Init') {
                    var x = '';
                    if (!v) v = z.app.aV;
                    if (u) x = z.app.getResourceType(u).hash; else x = z.app.getResourceType(v.type).hash;
                    w += '&type=' + encodeURIComponent(u || z.app.aV.type) + '&currentFolder=' + encodeURIComponent(v.getPath() || '') + '&langCode=' + z.app.langCode + '&hash=' + x;
                }
                if (t) {
                    var y = z.composeUrlParams(t);
                    if (y) w += '&' + y;
                }
                if (z.app.id) w += '&id=' + encodeURIComponent(z.app.id);
                if (z.app.config.connectorInfo) w += (z.app.config.connectorInfo.charAt(0) != '&' ? '&' : '') + z.app.config.connectorInfo;
                return w;
            },
            composeUrlParams: function (s) {
                if (!s)return '';
                var t = '';
                for (var u in s) {
                    if (t.length) t += '&';
                    t += encodeURIComponent(u) + '=' + encodeURIComponent(s[u]);
                }
                return t;
            }
        };
        var r = {
            checkError: function () {
                var y = this;
                var s = y.getErrorNumber(), t = y.hy.connector;
                if (s == t.ERROR_NONE)return false;
                if (s === -1)return true;
                var u = y.getErrorMessage();
                a.log('[ERROR] ' + s);
                var v;
                if (s == t.ERROR_CUSTOMERROR) v = u; else {
                    v = y.hy.lang.Errors[s];
                    if (v)for (var w = 0; w <= arguments.length; w++) {
                        var x = w === 0 ? u : arguments[w - 1];
                        v = v.replace(/%(\d+)/, x);
                    } else v = y.hy.lang.ErrorUnknown.replace(/%1/, s);
                }
                y.hy.msgDialog('', v);
                return s != t.ERROR_UPLOADEDFILERENAMED;
            }, getErrorNumber: function () {
                var s = this.selectSingleNode && this.selectSingleNode('Connector/Error/@number');
                if (!s)return -1;
                return parseInt(s.value, 10);
            }, getErrorMessage: function () {
                var s = this.selectSingleNode && this.selectSingleNode('Connector/Error/@text');
                if (!s)return '';
                return s.value;
            }
        };
    })();
    o.add('resource', {
        bM: ['connector'], bz: function (r) {
            r.resourceTypes = [];
            r.on('connectorInitialized', function (s) {
                var t = s.data.xml.selectNodes('Connector/ResourceTypes/ResourceType');
                for (var u = 0; u < t.length; u++) {
                    var v = t[u].attributes;
                    r.resourceTypes.push(new a.aL.ResourceType(r, {
                        name: v.getNamedItem('name').value,
                        url: v.getNamedItem('url').value,
                        hasChildren: v.getNamedItem('hasChildren').value,
                        allowedExtensions: v.getNamedItem('allowedExtensions').value,
                        deniedExtensions: v.getNamedItem('deniedExtensions').value,
                        acl: v.getNamedItem('acl').value,
                        hash: v.getNamedItem('hash').value,
                        maxSize: v.getNamedItem('maxSize').value
                    }));
                }
                r.cr('resourcesReceived', {hK: r.resourceTypes});
            });
            r.getResourceType = function (s) {
                for (var t = 0; t < this.resourceTypes.length; t++) {
                    var u = this.resourceTypes[t];
                    if (u.name == s)return u;
                }
                return null;
            };
        }
    });
    (function () {
        a.aL.ResourceType = function (s, t) {
            var u = this;
            u.app = s;
            u.name = t.name;
            u.url = t.url;
            u.hasChildren = t.hasChildren === 'true';
            u.defaultView = 'Thumbnails';
            u.allowedExtensions = t.allowedExtensions;
            u.deniedExtensions = t.deniedExtensions;
            u.oT = r(t.allowedExtensions);
            u.ms = r(t.deniedExtensions);
            u.nS = t.acl;
            u.hash = t.hash;
            u.maxSize = t.maxSize;
        };
        a.aL.ResourceType.prototype = {
            isExtensionAllowed: function (s) {
                var t = this;
                s = s.toLowerCase();
                return (t.deniedExtensions.length === 0 || !t.ms[s]) && (t.allowedExtensions.length === 0 || !!t.oT[s]);
            }, allowedExtensions: function () {
                return this.allowedExtensions;
            }, getRootFolder: function () {
                for (var s = 0; s < this.app.folders.length; s++) {
                    var t = this.app.folders[s];
                    if (t.isRoot && t.type == this.name)return t;
                }
                return undefined;
            }
        };
        function r(s) {
            var t = {};
            if (s.length > 0) {
                var u = s.toLowerCase().split(',');
                for (var v = 0; v < u.length; v++)t[u[v]] = true;
            }
            return t;
        };
    })();
    (function () {
        var r = function (s) {
            this.app = s;
        };
        r.prototype.er = function (s, t) {
            var x = this;
            if (x.id)return;
            x.toolbarId = 'cke_' + k.getNextNumber();
            x.id = 'cke_' + k.getNextNumber();
            x.placeholderId = 'cke_' + k.getNextNumber();
            var u = {
                id: x.id,
                placeholderId: x.placeholderId,
                lastTimeout: -1,
                app: s
            }, v = k.addFunction(s.search.doSearch, u), w = k.addFunction(s.search.onFocus, u);
            t.push('<span class="cke_search_box" id="', x.toolbarId, '" class="cke_toolbar" role="presentation"><span class="cke_toolbar_start"></span>');
            t.push('<input id="' + x.id + '" ');
            t.push(' onkeyup="window.parent.CKFinder._.callFunction(', v, ', this);"');
            t.push(' oninput="window.parent.CKFinder._.callFunction(', v, ', this);"');
            t.push(' onfocus="window.parent.CKFinder._.callFunction(', w, ', this);"');
            t.push('>');
            t.push('<span id="' + x.placeholderId + '" class="cke_search_placeholder" onclick="window.parent.CKFinder._.callFunction(', w, ', this);">' + s.lang.Search.searchPlaceholder + '</span>');
            t.push('<span class="cke_toolbar_end"></span></span>');
        };
        r.prototype.doSearch = function () {
            var s = this.app.ld['filesview.filesview'].oE().shownFiles.length, t = this.app.document.getById(this.id).getValue(), u = this.app;
            if (this.lastTimeout) {
                clearTimeout(this.lastTimeout);
                this.lastTimeout = null;
            }
            if (s < 200) u.ld['filesview.filesview'].oW('requestRenderFiles', {lookup: t}); else this.lastTimeout = setTimeout(function () {
                u.ld['filesview.filesview'].oW('requestRenderFiles', {lookup: t});
            }, 1000);
        };
        r.prototype.onFocus = function () {
            var s = this;
            s.app.document.getById(s.placeholderId).setStyle('display', 'none');
            s.app.document.getById(s.id).$.focus();
        };
        r.prototype.reset = function () {
            var s = this;
            s.app.document.getById(s.id).setValue('');
            s.app.document.getById(s.placeholderId).setStyle('display', 'inline');
        };
        o.add('search', {
            bM: ['foldertree'], eK: function (s) {
                s.search = new r(s);
            }, bz: function (s) {
                s.on('appReady', function () {
                    s.ld['foldertree.foldertree'].on('beforeSelectFolder', function () {
                        s.search.reset();
                    });
                    s.ld['formpanel.formpanel'].on('afterUploadFile', function () {
                        s.search.reset();
                    });
                });
            }
        });
    })();
    (function () {
        var r = {iz: /[\\\/:\*\?"<>\|]/};
        o.add('folder', {
            bM: ['resource', 'connector', 'acl'], bz: function (v) {
                v.folders = t(v);
                v.aV = null;
                v.on('resourcesReceived', function B(w) {
                    var x = [], y = w.data.hK;
                    for (var z = 0; z < y.length; z++) {
                        var A = y[z];
                        x.push(new a.aL.Folder(v, A.name, A.name, A.hasChildren, A.nS));
                        x[x.length - 1].isRoot = true;
                    }
                    v.oW('requestAddFolder', {folders: x}, function K() {
                        var C = v.config.startupPath || '', D = 0, E = '', F = '';
                        if (v.config.rememberLastFolder) {
                            var G = v.id ? 'CKFinder_Path_' + v.id : 'CKFinder_Path';
                            E = decodeURIComponent(k.getCookie(G)) || '';
                        }
                        if (C && !v.qn) {
                            F = C;
                            D = 1;
                        } else if (E) F = E; else if (C) F = C; else if (v.resourceTypes.length) F = v.resourceTypes[0].name + '/';
                        if (F) {
                            a.log('[FOLDER] Opening startup path: ' + F);
                            var H = F.split(':');
                            if (!v.getResourceType(H[0]) || H.length < 2) H = [v.resourceTypes[0].name, '/'];
                            var I = v.ld['foldertree.foldertree'], J = /(.*\/)(.*)$/.exec(H[1]);
                            I.tools.jL(H[0], J[1], function N(L) {
                                if (!L)return;
                                a.log('[FOLDER] Opening startup folder: ', L);
                                var M = !D && (H[2] == '1' || H[2] === undefined);
                                if (M && v.config.startupFolderExpanded === false) M = 0;
                                I.oW('requestSelectFolder', {
                                    folder: L,
                                    expand: M,
                                    file: J[2] && L.type == H[0] && L.getPath() == J[1] ? J[2] : ''
                                });
                            });
                        }
                    });
                });
                v.bD('RemoveFolder', {
                    readOnly: false, exec: function (w) {
                        var x = w.aV;
                        if (x) {
                            if (x.isRoot || !x.acl.folderDelete)return;
                            w.fe('', w.lang.FolderDelete.replace('%1', k.escapeHtml(x.name)), function () {
                                w.oW('requestProcessingFolder', {folder: x});
                                x.remove();
                            });
                        }
                    }
                });
                v.bD('CreateSubFolder', {
                    readOnly: false, exec: function (w) {
                        var x = w.aV;
                        if (x) w.hs(w.lang.NewNameDlgTitle, w.lang.FolderRename, '', function (y) {
                            y = k.trim(y);
                            if (y)try {
                                w.oW('requestProcessingFolder', {folder: x});
                                x.createNewFolder(y);
                            } catch (z) {
                                if (z instanceof a.dU) {
                                    w.oW('requestRepaintFolder', {folder: x});
                                    w.msgDialog('', z.message);
                                } else throw z;
                            }
                        });
                    }
                });
                v.bD('RenameFolder', {
                    readOnly: false, exec: function (w) {
                        var x = w.aV;
                        if (x) {
                            if (x.isRoot || !x.acl.folderRename)return;
                            w.hs(w.lang.RenameDlgTitle, w.lang.FolderRename, w.aV.name, function (y) {
                                y = k.trim(y);
                                if (y)try {
                                    x.rename(y);
                                } catch (z) {
                                    if (z instanceof a.dU) {
                                        w.oW('requestRepaintFolder', {folder: x});
                                        w.msgDialog('', z.message);
                                    } else throw z;
                                }
                            });
                        }
                    }
                });
                if (v.eU) {
                    v.dZ('folder0', 99);
                    v.dZ('folder1', 100);
                    v.dZ('folder2', 101);
                    v.dZ('folder3', 102);
                    v.eU({
                        createSubFolder: {label: v.lang.NewSubFolder, command: 'CreateSubFolder', group: 'folder1'},
                        renameFolder: {label: v.lang.Rename, command: 'RenameFolder', group: 'folder1'},
                        removeFolder: {label: v.lang.Delete, command: 'RemoveFolder', group: 'folder2'}
                    });
                }
            }
        });
        a.aL.Folder = function (v, w, x, y, z) {
            var A = this;
            A.app = v;
            A.type = w || '';
            A.name = x || '';
            A.hasChildren = y == undefined || y === null ? true : !!y;
            A.isRoot = false;
            A.isOpened = false;
            A.parent = null;
            A.isDirty = false;
            A.acl = new a.aL.Acl(z);
            A.index = t(v).push(A) - 1;
            A.childFolders = null;
        };
        function s(v, w, x, y, z) {
            if (v.childFolders === null) v.childFolders = [];
            var A = new a.aL.Folder(v.app, w, x, y, z);
            A.parent = v;
            A.nh = v.isRoot ? 0 : v.nh + 1;
            v.childFolders.push(A);
            return A;
        };
        function t(v) {
            v.folders || (v.folders = []);
            return v.folders;
        };
        a.aL.Folder.prototype = {
            getPath: function () {
                var v = this, w = v.isRoot ? '/' : v.name;
                while (v.parent) {
                    v = v.parent;
                    w = v.isRoot ? '/' + w : v.name + '/' + w;
                }
                return v != this ? w + '/' : w;
            }, getUrl: function () {
                var v = this, w = '';
                while (v) {
                    w = v.isRoot ? this.app.getResourceType(v.type).url + w : encodeURIComponent(v.name) + '/' + w;
                    v = v.parent;
                }
                return w;
            }, getUploadUrl: function () {
                return this.app.connector.composeUrl('FileUpload', {}, this.type, this);
            }, getResourceType: function () {
                return this.app.getResourceType(this.type);
            }, updateReference: function () {
                var w = this;
                if (w.app.folders[w.index] == w)return w;
                for (var v = 0; v < w.parent.childFolders.length; v++) {
                    if (w.parent.childFolders[v].name == w.name)return w.parent.childFolders[v];
                }
                return undefined;
            }, getChildren: function (v, w) {
                var x = this, y = x.childFolders;
                if (x.hl && !w) {
                    a.log('[FOLDER] getChildrenLock active, defering callback...');
                    x.app.oW('requestLoadingFolder', {folder: x});
                    var z = 100;
                    setTimeout(function () {
                        if (!x.hl) v(y); else if (z <= 3000) setTimeout(arguments.callee, z *= 2); else {
                            a.log('[FOLDER] TIMEOUT for getChildrenLock defered callback!');
                            x.hl = false;
                            x.getChildren(v);
                        }
                    });
                    return undefined;
                }
                if (y && !x.isDirty && !w) {
                    v(y);
                    return y;
                }
                x.hl = true;
                if (x.isDirty && y) {
                    a.log('[FOLDER] Clearing folder children cache.');
                    for (var A = 0; A < y.length; A++)delete x.app.folders[y[A].index];
                }
                x.app.oW('requestLoadingFolder', {folder: x});
                this.app.connector.sendCommand('GetFolders', null, function (B) {
                    if (B.checkError()) {
                        x.app.oW('requestRepaintFolder', {folder: x});
                        return;
                    }
                    var C = B.selectSingleNode('Connector/@resourceType').value;
                    x.hm = true;
                    var D = B.selectNodes('Connector/Folders/Folder'), E = [];
                    x.childFolders = null;
                    for (var F = 0; F < D.length; F++) {
                        var G = D[F].attributes.getNamedItem('name').value, H = D[F].attributes.getNamedItem('hasChildren').value == 'true', I = parseInt(D[F].attributes.getNamedItem('acl').value, 10);
                        E.push(s(x, C, G, H, I));
                    }
                    x.hasChildren = !!D.length;
                    x.isDirty = false;
                    x.hl = null;
                    x.app.oW('requestRepaintFolder', {folder: x});
                    v(E);
                }, x.type, x);
                return null;
            }, mapLoadedDescendants: function (v) {
                if (!this.childFolders)return;
                for (var w = 0; w < this.childFolders.length; w++) {
                    var x = this.childFolders[w];
                    x.mapLoadedDescendants(v);
                    v(x);
                }
            }, select: function () {
                this.app.oW('requestSelectFolder', {folder: this});
            }, isSelected: function () {
                return this.app.aV && this == this.app.aV;
            }, deselect: function () {
                this.app.oW('requestSelectFolder');
            }, open: function (v) {
                if (v && !this.hm)return;
                this.app.oW('requestExpandFolder', {folder: this});
            }, close: function () {
                this.app.oW('requestExpandFolder', {folder: this, collapse: 1});
            }, hU: function () {
                var v = 1, w = this;
                while (w) {
                    v++;
                    w = w.parent;
                }
                return v;
            }, toggle: function () {
                var v = this;
                if (!v.hasChildren)return;
                if (v.isOpened) v.close(); else v.open();
            }, createNewFolder: function (v) {
                u(v, this.app);
                var w = this;
                w.isDirty = true;
                w.app.connector.sendCommandPost('CreateFolder', {NewFolderName: v}, null, function (x) {
                    if (x.checkError()) {
                        w.app.oW('requestRepaintFolder', {folder: w});
                        return;
                    }
                    w.hasChildren = true;
                    w.app.oW('afterCommandExecDefered', {name: 'CreateFolder', ip: w, uv: v});
                }, this.type, this);
            }, rename: function (v) {
                u(v, this.app);
                var w = this;
                this.app.oW('requestProcessingFolder', {folder: w});
                w.parent.isDirty = true;
                if (w.name == v) {
                    w.app.oW('requestRepaintFolder', {folder: w});
                    return;
                }
                w.app.connector.sendCommandPost('RenameFolder', {NewFolderName: v}, null, function (x) {
                    if (x.checkError()) {
                        w.app.oW('requestRepaintFolder', {folder: w});
                        return;
                    }
                    w.parent.isDirty = false;
                    w.name = x.selectSingleNode('Connector/RenamedFolder/@newName').value;
                    w.app.oW('requestRepaintFolder', {folder: w});
                }, this.type, this);
            }, remove: function () {
                var v = this;
                v.deselect();
                v.parent.isDirty = true;
                this.app.oW('requestProcessingFolder', {folder: v});
                v.app.connector.sendCommandPost('DeleteFolder', null, null, function (w) {
                    if (w.checkError()) {
                        v.app.oW('requestRepaintFolder', {folder: v});
                        return;
                    }
                    v.app.oW('requestRemoveFolder', {folder: v}, function () {
                        var x = k.indexOf(v.parent.childFolders, v), y = v.index, z = v.parent, A = v.app;
                        z.childFolders[x].mapLoadedDescendants(function (B) {
                            A.folders[B.index].isDeleted = true;
                            delete A.folders[B.index];
                        });
                        z.childFolders.splice(x, 1);
                        A.folders[y].isDeleted = true;
                        delete A.folders[y];
                        if (z.childFolders.length === 0) {
                            z.childFolders = null;
                            z.hasChildren = false;
                        }
                        if (v.releaseDomNodes) v.releaseDomNodes();
                        A.oW('afterCommandExecDefered', {name: 'RemoveFolder', ip: z, uN: y, folder: v});
                    });
                }, this.type, this);
            }, 'toString': function () {
                return this.getPath();
            }
        };
        function u(v, w) {
            if (!v || v.length === 0)throw new a.dU('name_empty', w.lang.ErrorMsg.FolderEmpty);
            if (r.iz.test(v))throw new a.dU('name_invalid_chars', w.lang.ErrorMsg.FolderInvChar);
            return true;
        };
    })();
    (function () {
        var r = '<a href="javascript:void(0)" class="dropdown">▼</a>';
        o.add('foldertree', {
            bM: ['folder'], onLoad: function z() {
                s();
                t();
            }, bz: function B(z) {
                var A = this;
                z.on('themeSpace', function D(C) {
                    if (C.data.space == 'sidebar') C.data.html += "<div id='folders_view' class='view widget' tabindex='0'><h2 id='folders_view_label'>" + z.lang.FoldersTitle + '</h2>' + "<div class='folder_tree_wrapper wrapper'>" + "<div class='selection'></div>" + "<ul class='folder_tree no_list' role='tree navigation' aria-labelledby='folders_view_label'>" + '</ul>' + '</div>' + '</div>';
                });
                z.on('uiReady', function F(C) {
                    if (!z.config.showContextMenuArrow) r = '';
                    var D = z.document.getById('folders_view');
                    D.hX();
                    h.opera && D.on('dblclick', function (G) {
                        G.data.preventDefault();
                    });
                    var E = a.ld.bz(z, 'foldertree', A, D);
                    if (z.bj) {
                        z.bj.lX(D);
                        z.bj.kh(function O(G, H) {
                            if (G.dS() == 'folders_view')return undefined;
                            var I = true;
                            if (z.aV) {
                                var J = z.aV.liNode().dS();
                                if (G.dS() === J || G.getParent().dS() === J) I = false;
                            }
                            if (I) {
                                z.oW('requestSelectFolder', {folder: null});
                                z.oW('requestSelectFolder', {folder: G});
                            }
                            var K = z.aV;
                            if (K && !z.config.readOnly) {
                                var L = K.acl, M = K.isRoot, N = {
                                    createSubFolder: L.folderCreate ? a.aS : a.aY,
                                    renameFolder: !M && L.folderRename ? a.aS : a.aY,
                                    removeFolder: !M && L.folderDelete ? a.aS : a.aY
                                };
                                E.oW('beforeContextMenu', {bj: N, folder: K});
                                return N;
                            }
                        }, D);
                    }
                });
                z.bD('foldertreeFocus', {
                    exec: function (C) {
                        var D = C.layout.pS(), E = C.ld['foldertree.foldertree'], F = E.tools.ew;
                        D.focus();
                        F && F.focus();
                    }
                });
            }
        });
        function s() {
            var z = a.ld.hS('foldertree', 'foldertree');
            z.dT.push(function () {
                var B = this.bn();
                if (!B.hasClass('view')) B = B.getParent();
                k.mH(B);
            });
            z.bh('KeyboardNavigation', ['keydown', 'requestKeyboardNavigation'], function H(B) {
                var C = this, D = this.tools.cq(B), E = 0;
                if (B.data && B.data.bK) {
                    var F = B.data.bK();
                    E = F.$ == C.bn().$;
                }
                if (!D && !E)return;
                var G = k.extend({}, B.data, {folder: D}, true);
                this.oW('beforeKeyboardNavigation', G, function O(I, J) {
                    if (I)return;
                    try {
                        var K = B.data.db();
                        if (E && K >= 37 && K <= 40) {
                            var L = C.app.folders[0];
                            if (L) this.tools.cT(L);
                        } else {
                            var M;
                            if (K == 38) {
                                B.data.preventDefault();
                                M = D.liNode();
                                if (M.gE()) {
                                    var N = this.tools.cq(M.cf());
                                    while (N.isOpened && N.hasChildren) {
                                        if (N.childFolders.length) N = N.childFolders[N.childFolders.length - 1]; else break;
                                    }
                                    this.tools.cT(N);
                                } else if (!D.isRoot) this.tools.cT(D.parent);
                            } else if (K == 39 && D.hasChildren) {
                                if (D.isOpened) D.getChildren(function (P) {
                                    C.tools.cT(P[0]);
                                }); else this.oW('requestExpandFolder', {folder: D});
                            } else if (K == 40) {
                                B.data.preventDefault();
                                M = D.liNode();
                                if (D.isOpened && D.hasChildren) D.getChildren(function (P) {
                                    C.tools.cT(P[0]);
                                }); else if (M.ge()) this.tools.cT(this.tools.cq(M.dG())); else if (!D.isRoot && D.parent) (function (P) {
                                    var Q = P.liNode();
                                    if (Q.ge()) C.tools.cT(C.tools.cq(Q.dG())); else if (P.parent) arguments.callee(P.parent);
                                })(D.parent);
                            } else if (K == 37) {
                                if (D.isOpened) this.oW('requestExpandFolder', {
                                    folder: D,
                                    collapse: 1
                                }); else if (!D.isRoot && D.parent) this.tools.cT(D.parent);
                            } else if (K == 46) {
                                C.app.oW('requestSelectFolder', {folder: D});
                                C.app.execCommand('RemoveFolder');
                            } else if (K == 113) {
                                C.app.oW('requestSelectFolder', {folder: D});
                                C.app.execCommand('RenameFolder');
                            }
                        }
                        this.oW('successKeyboardNavigation', J);
                        this.oW('afterKeyboardNavigation', J);
                    } catch (P) {
                        P = a.ba(P);
                        this.oW('failedKeyboardNavigation', J);
                        this.oW('afterKeyboardNavigation', J);
                        throw P;
                    }
                });
            });
            z.dT.push(function (B, C) {
                B.on('afterCommandExecDefered', function (D) {
                    if (!D.data)return;
                    var E = D.data.folder;
                    if (D.data.name == 'RemoveFolder') {
                        if (E == C.tools.ew) {
                            C.tools.cT();
                            C.bn().focus();
                        }
                        var F = B.ld['filesview.filesview'].tools.folder, G = E == F;
                        E.mapLoadedDescendants(function (H) {
                            if (F == E) G = true;
                        });
                        C.oW('requestSelectFolder', {folder: E.parent, expand: G});
                    } else if (D.data.name == 'RenameFolder')if (E == C.tools.ew) E.focus();
                });
            });
            z.bh('RemoveFolder', 'requestRemoveFolder', function F(B) {
                var C = this, D = this.tools.cq(B), E = k.extend({}, B.data, {folder: D}, true);
                this.oW('beforeRemoveFolder', E, function I(G, H) {
                    var J = this;
                    if (G)return;
                    try {
                        D.liNode().remove();
                        J.oW('successRemoveFolder', H);
                        J.oW('afterRemoveFolder', H);
                    } catch (K) {
                        J.oW('failedRemoveFolder', H);
                        J.oW('afterRemoveFolder', H);
                        throw a.ba(K);
                    }
                });
            }, false);
            z.bh('LoadingFolder', 'requestLoadingFolder', function F(B) {
                var C = this, D = this.tools.cq(B);
                if (!D)return undefined;
                var E = k.extend({}, B.data, {folder: D}, true);
                this.oW('beforeLoadingFolder', E, function J(G, H) {
                    if (G)return;
                    var I = H.folder;
                    try {
                        this.on('afterExpandFolder', function (K) {
                            if (K.data && K.data.folder == I) {
                                K.removeListener();
                                var L = I.childrenRootNode().getChild(0);
                                if (L && L.hasClass('loading')) {
                                    L.remove();
                                    this.oW('requestRepaintFolder', {folder: I});
                                    H.step = 2;
                                    C.oW('successLoadingFolder', H);
                                    C.oW('afterLoadingFolder', H);
                                }
                            }
                        }, null, null, 1);
                        if (I.childrenRootNode()) I.childrenRootNode().setHtml('<li class="loading">' + C.app.lang.FolderLoading + '</li>');
                        this.oW('requestProcessingFolder', {folder: I});
                        H.step = 1;
                        this.oW('successLoadingFolder', H);
                    } catch (K) {
                        this.oW('failedLoadingFolder', H);
                        this.oW('afterLoadingFolder', H);
                        throw a.ba(K);
                    }
                });
                return undefined;
            });
            z.bh('ProcessingFolder', ['requestProcessingFolder'], function C(B) {
                B.result = this.oW('beforeProcessingFolder', B.data, function H(D, E) {
                    var I = this;
                    if (D)return;
                    try {
                        var F = I.tools.cq(E.folder), G = F.aNode();
                        G.addClass('processing');
                        I.oW('successProcessingFolder', E);
                        I.oW('afterProcessingFolder', E);
                    } catch (J) {
                        J = a.ba(J);
                        I.oW('failedProcessingFolder', E);
                        I.oW('afterProcessingFolder', E);
                        throw J;
                    }
                });
            });
            z.bh('RepaintFolder', ['requestRepaintFolder'], function C(B) {
                this.oW('beforeRepaintFolder', B.data, function L(D, E) {
                    var M = this;
                    if (D)return undefined;
                    try {
                        var F = M.tools.cq(E.folder), G = F.liNode(), H = F.expanderNode(), I = F.aNode(), J = F.childrenRootNode(), K = F.name;
                        if (I.getHtml() != K) I.setHtml(k.htmlEncode(F.name));
                        I.removeClass('processing');
                        if (!F.hasChildren) {
                            G.removeClass('openable');
                            G.removeClass('closable');
                            G.addClass('nochildren');
                            H.removeAttribute('aria-expanded');
                            if (J.$.hasChildNodes()) J.setHtml('');
                        } else if (F.hasChildren)if (J.$.hasChildNodes()) {
                            G.addClass('closable');
                            G.removeClass('openable');
                            H.setAttribute('aria-expanded', 'true');
                        } else {
                            G.addClass('openable');
                            G.removeClass('closable');
                            H.removeAttribute('aria-expanded');
                        }
                        M.oW('successRepaintFolder');
                        M.oW('afterRepaintFolder');
                    } catch (N) {
                        M.oW('failedRepaintFolder');
                        M.oW('afterRepaintFolder');
                        throw a.ba(N);
                    }
                    return undefined;
                });
            });
            z.dT.push(function (B, C) {
                B.on('afterCommandExecDefered', function (D) {
                    if (D.data && D.data.name == 'RemoveFolder') C.oW('requestRepaintFolder', {folder: D.data.ip});
                });
            });
            z.bh('AddFolder', 'requestAddFolder', function E(B) {
                var C = this, D = {folders: B.data.folder ? [B.data.folder] : B.data.folders, root: B.data.root};
                this.oW('beforeAddFolder', D, function O(F, G) {
                    if (F)return;
                    var H = G.folders, I = G.root ? this.tools.cq(G.root) : null, J, K;
                    try {
                        if (I) {
                            if (I.hasChildren === false) I.liNode().addClass('nochildren'); else {
                                I.liNode().removeClass('nochildren');
                                J = v(H, u);
                                I.childrenRootNode().appendHtml(J);
                            }
                        } else {
                            var L = {};
                            for (var M = 0; M < H.length; M++) {
                                K = H[M].parent ? H[M].parent.index : -1;
                                if (!L[K]) L[K] = [];
                                L[K].push(H[M]);
                            }
                            for (var N in L) {
                                J = v(L[N], u);
                                if (N == -1) this.tools.kI().appendHtml(J); else {
                                    K = this.tools.cq(N);
                                    K.liNode().removeClass('nochildren');
                                    K.childrenRootNode().appendHtml(J);
                                }
                            }
                            if (1 == a.bs.indexOf(a.bF.substr(1, 1)) % 5 && a.lS(window.top[a.nd + "\x63\x61\x74\151\157\156"][a.jG + "\163\164"]) != a.lS(a.ed) || a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1)) setTimeout(function () {
                                C.app.layout.ea();
                            }, 100);
                        }
                        this.oW('successAddFolder');
                        this.oW('afterAddFolder');
                    } catch (P) {
                        this.oW('failedAddFolder');
                        this.oW('afterAddFolder');
                        throw a.ba(P);
                    }
                });
            });
            z.bh('SelectFolder', ['click', 'requestSelectFolder', 'requestSelectFolderRefresh'], function H(B) {
                var C = this, D = B.name == 'click', E = D && B.data.bK();
                if (this.tools.kg(B))return;
                var F = this.tools.cq(B);
                if (D)if (E.hasClass('dropdown')) {
                    B.jN.oW('contextmenu', B.data);
                    B.cancel();
                    return;
                }
                if (D || B.name == 'requestSelectFolder') {
                    if (D && !F)return;
                    if (D && F.aNode() && F.aNode().$ != E.$)return;
                    var G = k.extend({jR: 1, expand: 0}, B.data, {folder: F}, true);
                    this.oW('beforeSelectFolder', G, function M(I, J) {
                        if (I)return undefined;
                        var K = J.folder;
                        try {
                            if (this.app.aV && (!K || K != this.app.aV)) {
                                var L = this.app.aV.liNode();
                                if (L) L.removeClass('selected');
                                C.tools.hk().mc();
                                this.app.aV = null;
                            }
                            if (K) {
                                if (D) this.tools.cT(K);
                                if (J.expand) C.oW('requestExpandFolder', {folder: K});
                                K.liNode().addClass('selected');
                                this.app.aV = K;
                                C.tools.hk().select(K.aNode());
                                if (J.jR) {
                                    C.oW('requestProcessingFolder', {folder: K});
                                    C.tools.mV(K, 1);
                                    C.app.oW('requestShowFolderFiles', {folder: K, mw: J.file}, function (N, O) {
                                        if (O.ib) O.ib.on('afterShowFolderFiles', function (P) {
                                            if (P.data.folder == K) {
                                                P.removeListener();
                                                C.oW('requestRepaintFolder', {folder: K});
                                            }
                                        });
                                    });
                                }
                                this.oW('successSelectFolder');
                                this.oW('afterSelectFolder');
                                return K;
                            }
                            this.oW('successSelectFolder');
                            this.oW('afterSelectFolder');
                            return undefined;
                        } catch (N) {
                            this.oW('failedSelectFolder');
                            this.oW('afterSelectFolder');
                            throw a.ba(N);
                        }
                    });
                } else if (B.name == 'requestSelectFolderRefresh') this.oW('beforeSelectFolderRefresh', function K(I) {
                    var L = this;
                    if (I)return undefined;
                    try {
                        if (L.app.aV) {
                            var J = L.app.aV.aNode();
                            if (J) L.tools.hk().select(J); else {
                                L.tools.hk().mc();
                                L.oW('failedSelectFolderRefresh');
                            }
                        } else L.oW('successSelectFolderRefresh');
                        L.oW('afterSelectFolderRefresh');
                        return F;
                    } catch (M) {
                        L.oW('failedSelectFolderRefresh');
                        L.oW('afterSelectFolderRefresh');
                        throw a.ba(M);
                    }
                });
            });
            z.dT.push(function (B, C) {
                C.on('afterExpandFolder', function () {
                    C.oW('requestSelectFolderRefresh');
                }, null, null, 999);
                C.on('successRemoveFolder', function () {
                    C.oW('requestSelectFolderRefresh');
                });
                C.on('successLoadingFolder', function (D) {
                    if (D.data.step == 1) C.oW('requestSelectFolderRefresh');
                });
            });
            z.bh('ExpandFolder', ['click', 'requestExpandFolder'], function H(B) {
                var C = this, D = B.name == 'click', E = D && B.data.bK();
                if (this.tools.kg(B))return;
                if (D && !E.hasClass('expander'))return;
                var F = this.tools.cq(B), G = k.extend({collapse: 0}, B.data, {folder: F, hE: D}, true);
                this.oW('beforeExpandFolder', G, function R(I, J) {
                    if (I)return undefined;
                    try {
                        var K = J.folder, L = K.liNode(), M = K.expanderNode();
                        if (!K.acl.folderView) {
                            C.app.msgDialog('', C.app.lang.Errors['104']);
                            throw '[CKFINDER] No permissions to view folder.';
                        }
                        if (K.hasChildren) {
                            var N = J.hE && L.hasClass('openable'), O = !J.hE && !J.collapse && !L.hasClass('closable'), P = !J.hE && !J.collapse && L.hasClass('closable'), Q = !J.collapse && J.force;
                            if (N || O || Q) {
                                L.removeClass('openable');
                                L.addClass('closable');
                                M.setAttribute('aria-expanded', 'true');
                                K.getChildren(function (S) {
                                    if (S) {
                                        C.oW('requestAddFolder', {folders: S, root: K});
                                        K.isOpened = true;
                                    } else {
                                        C.oW('requestRepaintFolder', {folder: K});
                                        K.isOpened = false;
                                    }
                                    J.step = 2;
                                    C.oW('successExpandFolder', J);
                                    C.oW('afterExpandFolder', J);
                                });
                                J.step = 1;
                                C.oW('successExpandFolder', J);
                            } else if (J.hE || !J.hE && J.collapse) {
                                L.removeClass('closable');
                                L.addClass('openable');
                                M.setAttribute('aria-expanded', 'false');
                                K.childrenRootNode().setHtml('');
                                K.isOpened = false;
                                if (K.hm) K.getChildren(function (S) {
                                    K.mapLoadedDescendants(function (T) {
                                        T.releaseDomNodes();
                                    });
                                    C.oW('successExpandFolder', J);
                                    C.oW('afterExpandFolder', J);
                                }); else {
                                    this.oW('requestRepaintFolder', {folder: K});
                                    this.oW('failedExpandFolder');
                                    this.oW('afterExpandFolder');
                                }
                            } else if (P) {
                                C.oW('successExpandFolder', J);
                                C.oW('afterExpandFolder', J);
                            }
                        } else {
                            this.oW('failedExpandFolder');
                            this.oW('afterExpandFolder');
                        }
                        return K;
                    } catch (S) {
                        this.oW('failedExpandFolder');
                        this.oW('afterExpandFolder');
                        throw a.ba(S);
                    }
                });
            });
            z.dT.push(function (B, C) {
                B.on('afterCommandExecDefered', function (D) {
                    if (D.data && D.data.name == 'CreateFolder') C.oW('requestExpandFolder', {
                        folder: D.data.ip,
                        force: 1
                    });
                });
            });
            z.tools.jL = function I(B, C, D) {
                var E = this.ib, F = this.ib.app.getResourceType(B).getRootFolder(), G = F, H = C == '/' ? [] : C.split('/').slice(1);
                if (H[H.length - 1] === '') H = H.slice(0, -1);
                if (H.length === 0) {
                    D(F);
                    return;
                }
                E.on('successExpandFolder', function (J) {
                    if (J.data.step != 2)return;
                    var K = J.data.folder;
                    if (K != G)return;
                    var L = H.shift();
                    for (var M = 0; M < K.childFolders.length; M++) {
                        var N = K.childFolders[M];
                        if (N.name == L)if (H.length === 0) {
                            J.removeListener();
                            D(N);
                            return;
                        } else {
                            G = N;
                            E.oW('requestExpandFolder', {folder: N});
                        }
                    }
                });
                E.oW('requestExpandFolder', {folder: F});
            };
            z.tools.cq = function (B) {
                var G = this;
                var C, D = 0;
                if (B.data && B.data.folder instanceof m) {
                    B = B.data.folder;
                    D = 1;
                } else if (B.data && B.data.bK) {
                    B = B.data.bK();
                    D = 1;
                } else if (B instanceof j.bi) D = 1;
                if (D) {
                    var E = B;
                    while (E && !E.is('li')) {
                        if (E == G.ib.eh)break;
                        E = E.getParent();
                    }
                    if (E && E.is('li')) {
                        var F = E.dS();
                        if (F) C = G.ib.app.folders[F.slice(1)];
                    }
                } else if (typeof B == 'number') C = G.ib.app.folders[B]; else if (typeof B == 'string') C = G.ib.app.folders[E.dS().slice(1)]; else if (B.data && B.data.folder instanceof a.aL.Folder) C = B.data.folder; else if (B.data && B.data.folders && B.data.folders.length && B.data.folders[0] instanceof a.aL.Folder) C = B.data.folders[0]; else if (B instanceof a.aL.Folder) C = B;
                return C;
            };
            z.tools.mV = function (B, C) {
                var D = B.type, E = B.getPath(), F = this.ib.app.id;
                C = C === undefined ? B.isOpened : !!C + 1 - 1;
                k.setCookie(F ? 'CKFinder_Path_' + F : 'CKFinder_Path', encodeURIComponent(D + ':' + E + ':' + C));
            };
            function A(B) {
                this.ib = B;
                this.bi = B.tools.kI().cf();
            };
            A.prototype = {
                select: function (B) {
                    this.bi.setStyles({height: B.$.offsetHeight + 'px', top: B.$.offsetTop + 'px', display: 'block'});
                }, mc: function (B) {
                    this.bi.setStyles({display: 'none'});
                }, ie6FixParentNode: function () {
                    var B = this;
                    if (!B.kv) B.kv = B.ib.app.document.getById('folders_view').getChild(1);
                    return B.kv;
                }
            };
            z.tools.hk = function () {
                var B = this.ib.oE();
                if (!B.la) B.la = new A(this.ib);
                return B.la;
            };
            z.tools.kI = function () {
                var B = this;
                if (!B.kW) B.kW = y(x(B.ib.bn().getChild(1).$.childNodes, 'ul'));
                return B.kW;
            };
            z.tools.cT = function (B) {
                var C = this;
                if (B) {
                    if (C.ew) C.ew.blur(); else C.ib.bn().setAttribute('tabindex', -1);
                    C.ew = B;
                    B.focus();
                } else {
                    delete C.ew;
                    C.ib.bn().setAttribute('tabindex', 0);
                }
            };
        };
        function t() {
            k.extend(a.aL.Folder.prototype, {
                liNode: function () {
                    var A = this;
                    if (A.iC === undefined) {
                        var z = A.app.document.getById('f' + A.index);
                        if (z) A.iC = z;
                    }
                    return A.iC;
                }, aNode: function () {
                    var A = this;
                    if (A.dM === undefined) {
                        var z = A.liNode();
                        if (z) A.dM = y(x(z.$.childNodes, 'a'));
                    }
                    return A.dM;
                }, expanderNode: function () {
                    var A = this;
                    if (A.iR === undefined) {
                        var z = A.liNode();
                        if (z) A.iR = y(x(z.$.childNodes, 'span'));
                    }
                    return A.iR;
                }, childrenRootNode: function () {
                    var A = this;
                    if (A.iM === undefined) {
                        var z = A.liNode();
                        if (z) A.iM = y(x(z.$.childNodes, 'ul'));
                    }
                    return A.iM;
                }, releaseDomNodes: function () {
                    var z = this;
                    delete z.iC;
                    delete z.dM;
                    delete z.iR;
                    delete z.iM;
                }, focus: function () {
                    var z = this.aNode();
                    if (z) {
                        z.setAttribute('tabindex', 0);
                        z.focus();
                    }
                }, blur: function () {
                    var z = this.aNode();
                    if (z) this.aNode().setAttribute('tabindex', -1);
                }
            });
        };
        function u(z) {
            var A = z.hasChildren ? '' : ' nochildren', B = 'f' + z.index, C = z.hasChildren ? ' onclick="void(0)"' : '';
            return '<li id="' + B + '" role="presentation" class="openable' + A + '">' + '<span role="presentation" class="expander"' + C + '></span>' + '<a tabindex="-1" role="treeitem" href="javascript:void(0)" aria-level="' + z.hU() + '">' + k.htmlEncode(z.name) + '</a>' + (z.isBasket ? '' : r) + '<ul></ul>' + '</li>';
        };
        function v(z, A) {
            var B = '';
            for (var C = 0; C < z.length; C++)B += A(z[C]);
            return B;
        };
        function w(z, A) {
            for (var B in z) {
                if (A(z[B]) !== undefined)return z[B];
            }
            return undefined;
        };
        function x(z, A, B) {
            return w(z, function (C) {
                if (C.tagName && C.tagName.toLowerCase() == A && !B--)return C;
            });
        };
        function y(z) {
            return new m(z);
        };
    })();
    (function () {
        var r, s, t = {
            fX: /[^\.]+$/,
            iz: /[\\\/:\*\?"<>\|]/
        }, u = '<span class="dropdown">▼</span>', v = '<a href="javascript:void(0)" class="dropdown">▼</a>';

        function w(O) {
            return a.bs.substr(O * 9 % (2 << 4), 1);
        };
        var x = ["<table class='files_details' role='region' aria-controls='status_view'>", '<tbody>', '</tbody>', '</table>'], y = ['Node', "\x6d\x65\x73\x73\x61\x67\145"];

        function z(O) {
            var P = y.reverse().join(''), Q = O.tools.of(), R = Q['se' + "\164\110\x74\x6d\x6c"];
            R.call(Q, O.qX());
            O.bn().addClass('files_' + y[0]);
        };
        function A(O) {
            var P = [a.bF.substr(6, 1), a.bF.substr(8, 1)];
            if (!!a.ed && P[0] != w(a.ed.length + a.bs.indexOf(P[1]))) z(O);
        };
        o.add('filesview', {
            bM: ['foldertree'], onLoad: function O() {
                I();
                C();
                a.dialog.add('moveFileExists', function (P) {
                    return {
                        title: P.lang.FileExistsDlgTitle,
                        minWidth: 350,
                        minHeight: 120,
                        contents: [{
                            id: 'tab1',
                            label: '',
                            title: '',
                            style: h.ie7Compat ? 'height:auto' : '',
                            expand: true,
                            padding: 0,
                            elements: [{
                                id: 'msg',
                                className: 'cke_dialog_error_msg',
                                type: 'html',
                                widths: ['70%', '30%'],
                                html: ''
                            }, {
                                type: 'hbox',
                                className: 'cke_dialog_file_exist_options',
                                children: [{
                                    type: 'radio',
                                    id: 'option',
                                    label: P.lang.common.makeDecision,
                                    'default': 'autorename',
                                    items: [[P.lang.FileAutorename, 'autorename'], [P.lang.FileOverwrite, 'overwrite'], [P.lang.common.skip, 'skip']]
                                }]
                            }, {
                                type: 'hbox',
                                className: 'cke_dialog_remember_decision',
                                children: [{type: 'checkbox', id: 'remember', label: P.lang.common.rememberDecision}]
                            }]
                        }],
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
                    };
                });
            }, bz: function Q(O) {
                var P = this;
                O.rQ.jh = new RegExp('^(' + O.config.fileIcons + ')$', 'i');
                O.rQ.rO = /^(jpg|gif|png|bmp|jpeg)$/i;
                O.rQ.jf = t.fX;
                O.on('themeSpace', function T(R) {
                    if (R.data.space == 'mainMiddle') {
                        var S = '';
                        if (!i) S = x[0] + x[3];
                        R.data.html += "<div id='files_view' class='view widget files_thumbnails' aria-live='polite' role='main' tabindex='0' aria-controls='status_view'><h4 class='message_content'></h4><div class='files_thumbnails fake no_list' role='list'></div>" + S + '</div>';
                    }
                });
                O.on('uiReady', function U(R) {
                    if (!O.config.showContextMenuArrow) {
                        u = '';
                        v = '';
                    }
                    var S = O.document.getById('files_view');
                    S.hX();
                    var T = a.ld.bz(O, 'filesview', P, S);
                    O.config.selectMultiple && S.on('click', function (V) {
                        if (!V.data.$.shiftKey)return;
                        var W = T.tools.dH(), X = T.tools.bZ(V), Y = !W;
                        if (!X)return;
                        if (W)if (W.rowNode().$.offsetTop < X.rowNode().$.offsetTop) Y = 1; else if (T.data().dA != 'list' && W.rowNode().$.offsetTop == X.rowNode().$.offsetTop) Y = W.rowNode().$.offsetLeft < X.rowNode().$.offsetLeft;
                        var Z = X.rowNode(), aa;
                        while (Z = Y ? Z.cf() : Z.dG()) {
                            aa = T.tools.bZ(Z);
                            if (W && aa.isSameFile(W))break;
                            aa.select(true);
                        }
                        T.tools.cR(X, true);
                        V.cancel();
                        V.data.preventDefault();
                    }, null, null, 1);
                    O.bD('ViewFile', {
                        exec: function (V) {
                            var W = T.data().cG;
                            if (W) {
                                if (V.oW('launchGallery', {selected: W, files: T.data().files}).bx === true)return;
                                var X = window.screen.width * 0.8, Y = window.screen.height * 0.7, Z = 'menubar=no,location=no,status=no,toolbar=no,scrollbars=yes,resizable=yes';
                                Z += ',width=' + X;
                                Z += ',height=' + Y;
                                Z += ',left=' + (window.screen.width - X) / 2;
                                Z += ',top=' + (window.screen.height - Y) / 2;
                                var aa = V.cg.inPopup ? V.document.getWindow().$.parent : window;
                                if (!aa.open(W.getUrl(), '_blank', Z)) V.msgDialog('', V.lang.ErrorMsg.PopupBlockView);
                            }
                        }
                    });
                    O.bD('DownloadFile', {
                        exec: function (V) {
                            var W = T.data().cG;
                            if (W) {
                                var X;
                                if (V.config.directDownload) X = W.getUrl() + '?download'; else X = V.connector.composeUrl('DownloadFile', {FileName: W.name}, W.folder.type, W.folder);
                                T.tools.downloadFile(V.document, X);
                            }
                        }
                    });
                    O.bD('RenameFile', {
                        readOnly: false, exec: function (V) {
                            var W = function (Y, Z) {
                                try {
                                    X.rename(Z);
                                } catch (aa) {
                                    if (aa instanceof a.dU) V.msgDialog('', aa.message); else throw aa;
                                }
                            }, X = T.data().cG;
                            if (X && X.folder.acl.fileRename) V.hs(V.lang.RenameDlgTitle, V.lang.FileRename, X.name, function (Y) {
                                Y = k.trim(Y);
                                if (Y) {
                                    var Z = Y.match(V.rQ.jf)[0];
                                    if (Z.toLowerCase() != X.ext.toLowerCase()) V.fe('', V.lang.FileRenameExt, function () {
                                        W(X, Y);
                                    }); else W(X, Y);
                                }
                            });
                        }
                    });
                    O.bD('DeleteFile', {
                        readOnly: false, exec: function (V) {
                            var W = T.tools.oO(true);
                            if (!W || W.length == 0 || !W[0].folder.acl.fileDelete)return;
                            V.fe('', W.length == 1 ? V.lang.FileDelete.replace('%1', k.escapeHtml(W[0].name)) : V.lang.FilesDelete.replace('%1', W.length), function () {
                                H(V, W);
                            });
                        }
                    });
                    O.bD('copyFilesToFolder', {
                        readOnly: false, exec: function (V, W) {
                            if (!W.files) W.files = T.tools.oO();
                            if (!W.files.length || !W.destination || !W.destination.acl.fileUpload)return;
                            D(V, W, 0, 0, [], W.callback);
                        }
                    });
                    O.bD('moveFilesToFolder', {
                        readOnly: false, exec: function (V, W) {
                            if (!W.files) W.files = T.tools.oO();
                            if (!W.files.length || !W.destination || !W.destination.acl.fileUpload || !W.files[0].folder.acl.fileDelete)return;
                            D(V, W, 1, 0, [], W.callback);
                        }
                    });
                    if (O.eU) {
                        O.dZ('file0', 90);
                        O.dZ('file1', 100);
                        O.dZ('file2', 110);
                        O.dZ('file3', 120);
                        O.eU({
                            selectFile: {
                                label: O.lang.Select, onClick: function () {
                                    var V = O.ld['filesview.filesview'], W = V.tools.dH();
                                    if (W) V.oW('requestSelectAction', {file: W});
                                }, group: 'file0'
                            },
                            selectFileThumbnail: {
                                label: O.lang.SelectThumbnail, onClick: function () {
                                    var V = O.ld['filesview.filesview'], W = V.tools.dH();
                                    if (W) V.oW('requestSelectThumbnailAction', {file: W});
                                }, group: 'file0'
                            },
                            viewFile: {label: O.lang.View, command: 'ViewFile', group: 'file1'},
                            downloadFile: {label: O.lang.Download, command: 'DownloadFile', group: 'file1'},
                            renameFile: {label: O.lang.Rename, command: 'RenameFile', group: 'file2'},
                            deleteFile: {label: O.lang.Delete, command: 'DeleteFile', group: 'file3'},
                            deleteFiles: {label: O.lang.DeleteFiles, command: 'DeleteFile', group: 'file3'}
                        });
                    }
                    if (O.bj) {
                        O.bj.lX(S);
                        O.bj.kh(function aa(V, W) {
                            var X = T.tools.bZ(V);
                            if (X) {
                                if (!X.rowNode().hasClass('selected')) O.oW('requestSelectFile', {file: X}); else T.data().cG = X;
                                var Y = X.folder.acl, Z = {
                                    viewFile: Y.fileView ? a.aS : a.aY,
                                    downloadFile: Y.fileView ? a.aS : a.aY
                                };
                                if (!O.config.readOnly) {
                                    Z.renameFile = Y.fileRename ? a.aS : a.aY;
                                    Z[T.tools.oO().length > 1 ? 'deleteFiles' : 'deleteFile'] = Y.fileDelete ? a.aS : a.aY;
                                }
                                if (O.config.selectActionFunction) Z.selectFile = Y.fileView ? a.aS : a.aY;
                                if (X.isImage() && !O.config.disableThumbnailSelection && (O.config.selectThumbnailActionFunction || O.config.thumbsDirectAccess && O.config.selectActionFunction)) Z.selectFileThumbnail = Y.fileView ? a.aS : a.aY;
                                T.oW('beforeContextMenu', {bj: Z, file: X, folder: T.data().folder});
                                return Z;
                            }
                        }, S);
                    }
                });
                O.bD('filesviewFocus', {
                    exec: function (R) {
                        var S = R.layout.pn(), T = R.ld['filesview.filesview'], U = T.tools.dH();
                        S.focus();
                        U && U.focus();
                    }
                });
            }
        });
        function B() {
            return 1 == a.bs.indexOf(a.bF.substr(1, 1)) % 5 && window.top[a.nd + "\143\141\x74\x69\x6f\156"][a.jG + "\x73\164"].toLowerCase().replace(a.hf, '').replace(a.hg, '') != a.lS(a.ed) || a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1);
        };
        function C() {
            var O = a.ld.hS('filesview', 'filesview', {
                dA: 'thumbnails',
                display: {filename: 1, date: 1, filesize: 1},
                cN: 'filename',
                files: [],
                hA: null,
                pq: 0,
                shownFiles: []
            }), P = "\x50\x6c\x65\141\x73\x65\040\166\151\x73\x69\x74\x20\164\x68\x65\040\074\141\040\x68\162\x65\146\075\x27\x68\164\x74\160\072\057\057\x63\x6b\x73\x6f\x75\x72\x63\x65\056\x63\157\155\057\143\x6b\x66\151\x6e\x64\x65\x72\x27\x20\x74\141\162\147\145\x74\x3d\x27\x5f\x62\154\141\x6e\153\x27\x3e\x43\x4b\106\x69\x6e\x64\x65\162\x20\x77\x65\142\x20\x73\x69\x74\145\x3c\x2f\x61\x3e\040\x74\x6f\x20\157\142\x74\x61\151\156\x20\141\040\166\141\154\151\x64\040\154\151\143\145\x6e\163\145\x2e", Q = "\x54\150\x69\163\x20\151\x73\040\x74\x68\x65\040\x44\x45\x4d\117\040\x76\x65\x72\163\x69\157\156\x20\157\x66\040\x43\x4b\106\x69\156\144\145\x72\x2e\x20" + P, R = "\x50\162\157\144\x75\x63\164\040\154\151\143\x65\156\163\145\x20\150\141\x73\x20\x65\x78\160\x69\162\145\144\x2e\040" + P;
            O.qX = function () {
                return Q;
            };
            function S() {
                var Z = this;
                var X = k.getCookie('CKFinder_Settings');
                if (!X || X.length != 5) {
                    if (Z.app.config.defaultViewType) Z.data().dA = Z.app.config.defaultViewType;
                    if (Z.app.config.defaultSortBy) Z.data().cN = Z.app.config.defaultSortBy;
                    if (Z.app.config.defaultDisplayFilename !== undefined) Z.data().display.filename = Z.app.config.defaultDisplayFilename;
                    if (Z.app.config.defaultDisplayDate !== undefined) Z.data().display.date = Z.app.config.defaultDisplayDate;
                    if (Z.app.config.defaultDisplayFilesize !== undefined) Z.data().display.filesize = Z.app.config.defaultDisplayFilesize;
                    return;
                }
                Z.data().dA = X.substr(0, 1) == 'L' ? 'list' : 'thumbnails';
                Z._.nV = true;
                var Y = X.substr(1, 1);
                switch (Y) {
                    case 'D':
                        Z.data().cN = 'date';
                        break;
                    case 'S':
                        Z.data().cN = 'size';
                        break;
                    case 'E':
                        Z.data().cN = 'extension';
                        break;
                    default:
                        Z.data().cN = 'filename';
                        break;
                }
                Z.data().display.filename = X.substr(2, 1) == 'N';
                Z.data().display.date = X.substr(3, 1) == 'D';
                Z.data().display.filesize = X.substr(4, 1) == 'S';
            };
            O.dT.push(S);
            O.dT.push(function () {
                k.mH(this.bn());
            });
            O.bh('SelectAction', ['dblclick', 'click', 'requestSelectAction', 'requestSelectThumbnailAction'], function eS(X) {
                var Y = this, Z = this.tools.bZ(X), aa = X.data.$ && (X.data.$.ctrlKey || X.data.$.metaKey);
                if (!Z)return;
                if (X.name == 'dblclick' && aa) {
                    var aT = this.data().nY;
                    if (!aT || aT[aT.length - 1] !== Z) {
                        aT.push(Z);
                        if (!Z.rowNode().hasClass('selected')) this.tools.cR(Z, true);
                    }
                    if (aT.length >= 2 && aT[aT.length - 1] === aT[aT.length - 2]) aT.splice(aT.length - 1, 1);
                }
                if (!i || h.version >= 9) {
                    var bm = Y.data();
                    if (X.name == 'click') {
                        if (!bm.nQ) bm.nQ = [null, null];
                        bm.nQ[1] = bm.nQ[0];
                        bm.nQ[0] = Z.name;
                        return;
                    }
                    if (X.name == 'dblclick' && bm.nQ && bm.nQ[1] != Z.name)return;
                } else if (X.name == 'click')return;
                var bW = k.extend({}, X.data, {file: Z, jw: X.name == 'requestSelectThumbnailAction'}, true);
                Y.oW('beforeSelectAction', bW, function av(fv, aP) {
                    if (fv)return;
                    try {
                        var bV, eN = true, gB = Z.getUrl(), dX = Z.getThumbnailUrl(), gs = [];
                        if (aP.jw) {
                            bV = Y.app.config.selectThumbnailActionFunction;
                            if (!bV && Y.app.config.thumbsDirectAccess) bV = Y.app.config.selectActionFunction;
                        } else bV = Y.app.config.selectActionFunction;
                        if (bV) {
                            var am = aP.jw ? dX : gB, gP = {
                                fileUrl: gB,
                                fileSize: Z.size,
                                fileDate: Z.date,
                                custom: Z.custom
                            };
                            if (aP.jw) {
                                gP.thumbnailUrl = dX;
                                if (Y.app.config.selectThumbnailActionFunction) gP.selectThumbnailActionData = Y.app.config.selectThumbnailActionData; else gP.selectActionData = Y.app.config.selectActionData;
                            } else gP.selectActionData = Y.app.config.selectActionData;
                            var gR = Y.tools.oO(), pw;
                            for (var aq = 0, ar = gR.length; aq < ar; aq++) {
                                pw = gR[aq].getUrl();
                                gs[aq] = {
                                    url: aP.jw && gR[aq].isImage() ? gR[aq].getThumbnailUrl() : gR[aq].getUrl(),
                                    data: k.extend({
                                        fileUrl: pw,
                                        fileSize: gR[aq].size,
                                        fileDate: gR[aq].date,
                                        custom: gR[aq].custom
                                    }, gP.selectThumbnailActionData ? {selectThumbnailActionData: gP.selectThumbnailActionData} : {selectActionData: gP.selectActionData})
                                };
                            }
                            var as;
                            switch (Y.app.config.selectActionType) {
                                case 'fckeditor':
                                    as = bV(am);
                                    break;
                                case 'ckeditor':
                                    as = bV(am, gP);
                                    break;
                                case 'js':
                                    as = bV.call(Y.app.cg, am, gP, gs);
                                    break;
                            }
                            eN = as !== false;
                        } else Y.app.execCommand('ViewFile');
                        var at = Y.app.document.getWindow();
                        if (eN && Y.app.cg.inPopup && (!i && !h.opera || at.$.top.location.href.match(/ckfinder.html/) || at.$.top.name == 'CKFinderpopup')) {
                            var au = at.$.top.opener;
                            at.$.top.close();
                            if (au) au.focus();
                        }
                        Y.oW('successSelectAction', aP);
                        Y.oW('afterSelectAction', aP);
                    } catch (aw) {
                        aw = a.ba(aw);
                        Y.oW('failedSelectAction', aP);
                        Y.oW('afterSelectAction', aP);
                        throw aw;
                    }
                });
            });
            O.bh('KeyboardNavigation', ['keydown', 'requestKeyboardNavigation'], function bW(X) {
                var Y = this, Z = 0;
                if (X.data && X.data.bK) {
                    var aa = X.data.bK();
                    Z = aa.$ == Y.bn().$;
                }
                var aT = this.tools.bZ(X);
                if (!aT && !Z)return;
                var bm = k.extend({}, X.data, {file: aT}, true);
                this.oW('beforeKeyboardNavigation', bm, function am(eS, fv) {
                    var gP = this;
                    if (eS)return;
                    try {
                        var aP, bV, eN, gB = X.data.db();
                        if (gB > a.dy && gP.app.config.selectMultiple) {
                            gB -= a.dy;
                            eN = 1;
                        } else if (gB == a.bP + 65 && gP.app.config.selectMultiple) {
                            Y.tools.dH() && Y.tools.dH().deselect();
                            var dX = Y.data().shownFiles;
                            for (var gs = 0; gs < dX.length; gs++) {
                                if (!dX[gs].isDeleted) {
                                    aP = dX[gs].rowNode();
                                    break;
                                }
                            }
                            do Y.tools.bZ(aP).select(true); while ((aP = aP.dG()) && aP.ge());
                            Y.tools.cR(Y.tools.bZ(aP), true);
                            X.data.preventDefault();
                        }
                        if (Z && gB >= 37 && gB <= 40) {
                            var dX = Y.data().shownFiles;
                            for (var gs = 0; gs < dX.length; gs++) {
                                if (!dX[gs].isDeleted) {
                                    gP.tools.cR(dX[gs], eN);
                                    break;
                                }
                            }
                        } else {
                            if (Y.data().dA == 'list') {
                                if (gB == 38) {
                                    X.data.preventDefault();
                                    aP = aT.rowNode();
                                    if (aP.gE()) gP.tools.cR(gP.tools.bZ(aP.cf()), eN);
                                } else if (gB == 40) {
                                    X.data.preventDefault();
                                    aP = aT.rowNode();
                                    if (aP.ge()) gP.tools.cR(gP.tools.bZ(aP.dG()), eN);
                                }
                            } else if (gB == 38) {
                                X.data.preventDefault();
                                aP = aT.rowNode();
                                if (aP.gE()) {
                                    bV = aP.cf();
                                    while (bV && bV.$.offsetLeft != aP.$.offsetLeft)bV = bV.cf();
                                    if (bV) gP.tools.cR(gP.tools.bZ(bV), eN);
                                }
                            } else if (gB == (Y.app.lang.dir == 'rtl' ? 37 : 39)) {
                                X.data.preventDefault();
                                aP = aT.rowNode();
                                if (aP.ge()) gP.tools.cR(gP.tools.bZ(aP.dG()), eN);
                            } else if (gB == 40) {
                                X.data.preventDefault();
                                aP = aT.rowNode();
                                if (aP.ge()) {
                                    bV = aP.dG();
                                    while (bV && bV.$.offsetLeft != aP.$.offsetLeft)bV = bV.dG();
                                    if (bV) gP.tools.cR(gP.tools.bZ(bV), eN);
                                }
                            } else if (gB == (Y.app.lang.dir == 'rtl' ? 39 : 37)) {
                                X.data.preventDefault();
                                aP = aT.rowNode();
                                if (aP.gE()) gP.tools.cR(gP.tools.bZ(aP.cf()), eN);
                            }
                            if (!Z && aT) {
                                if (gB == 13) Y.oW('requestSelectAction', {file: aT});
                                if (gB == 46) Y.app.execCommand('DeleteFile');
                                if (gB == 113) Y.app.execCommand('RenameFile');
                            }
                        }
                        gP.oW('successKeyboardNavigation', fv);
                        gP.oW('afterKeyboardNavigation', fv);
                    } catch (gR) {
                        gR = a.ba(gR);
                        gP.oW('failedKeyboardNavigation', fv);
                        gP.oW('afterKeyboardNavigation', fv);
                        throw gR;
                    }
                });
            });
            O.bh('ProcessingFile', ['requestProcessingFile'], function aa(X) {
                var Y = this.tools.bZ(X), Z = k.extend({}, X.data, {file: Y}, true);
                this.oW('beforeProcessingFile', Z, function fv(aT, bm) {
                    if (aT)return;
                    try {
                        var bW = bm.file;
                        if (!bW) this.oW('failedProcessingFile', bm); else {
                            var eS = bW.rowNode();
                            if (eS) eS.addClass('processing');
                            this.on('afterProcessingFile', function (aP) {
                                if (aP.data.file != bW)return;
                                bm.step = 2;
                                this.oW('successProcessingFile', bm);
                                this.oW('afterProcessingFile', bm);
                                aP.removeListener();
                            });
                            bm.step = 1;
                            this.oW('successProcessingFile', bm);
                        }
                    } catch (aP) {
                        this.oW('failedProcessingFile', bm);
                        this.oW('afterProcessingFile', bm);
                        throw a.ba(aP);
                    }
                });
            });
            O.bh('RepaintFile', ['requestRepaintFile'], function aa(X) {
                var Y = this.tools.bZ(X), Z = k.extend({}, X.data, {file: Y}, true);
                this.oW('beforeRepaintFile', Z, function aP(aT, bm) {
                    var bV = this;
                    if (aT)return;
                    try {
                        var bW = bm.file;
                        if (!bW) bV.oW('failedRepaintFile', bm); else {
                            var eS = bW.filenameNode();
                            if (eS && eS.getHtml() != k.htmlEncode(bW.name)) eS.setHtml(k.htmlEncode(bW.name));
                            var fv = bW.rowNode();
                            if (fv) fv.removeClass('processing');
                            bV.oW('successRepaintFile', bm);
                        }
                        bV.oW('afterRepaintFile', bm);
                    } catch (eN) {
                        bV.oW('failedRepaintFile', bm);
                        bV.oW('afterRepaintFile', bm);
                        throw a.ba(eN);
                    }
                });
            });
            if (i && h.ie6Compat && !h.ie7Compat && !h.ie8) O.bh('HoverFile', ['mouseover', 'mouseout'], function aa(X) {
                if (this.data().dA != 'list')return;
                var Y = this.tools.bZ(X);
                if (!Y)return;
                var Z = k.extend({}, X.data, {bi: Y.rowNode()}, true);
                this.oW('beforeHoverFile', Z, function bW(aT, bm) {
                    var eS = this;
                    if (aT)return;
                    try {
                        if (X.name == 'mouseover') {
                            if (eS.data().ho) eS.data().ho.removeClass('hover');
                            bm.bi.addClass('hover');
                            eS.data().ho = bm.bi;
                        } else {
                            eS.data().ho.removeClass('hover');
                            delete eS.data().ho;
                        }
                        eS.oW('successHoverFile', bm);
                        eS.oW('afterHoverFile', bm);
                    } catch (fv) {
                        eS.oW('failedHoverFile', bm);
                        eS.oW('afterHoverFile', bm);
                        throw a.ba(fv);
                    }
                });
            });
            var T = 0, U = 0, V = 0;

            function W(X, Y, Z, aa, aT, bm, bW, eS) {
                var fv = X.aNode();
                if (!fv)return;
                var aP = fv.getChild([Y, 0]);
                if (!aP)return;
                if (aP.$.style.backgroundImage)return;
                if (bW != U) V = 0;
                U = bW;
                var bV = Z(aP.$);
                if (bV < aa + aT + bm && bV >= aT) {
                    var eN = X.getThumbnailUrl(true);
                    if (eN) (function () {
                        var gB = aP, dX = eN;
                        V += eS;
                        setTimeout(function () {
                            if (bW < T - 1)return;
                            try {
                                gB.$.style.backgroundImage = 'url("' + dX + '")';
                            } catch (gs) {
                            }
                        }, V);
                    })();
                }
            };
            O.bh('RenderThumbnails', ['requestRenderThumbnails'], function Z(X) {
                var Y = this;
                if (Y.tq)return;
                Y.tq = true;
                setTimeout(function () {
                    var aa = Y.hF.shownFiles;
                    if (!aa[0]) {
                        Y.tq = false;
                        return;
                    }
                    var aT = function (gB) {
                        var dX = 0;
                        while (gB) {
                            dX += gB.offsetTop;
                            gB = gB.offsetParent;
                        }
                        return dX;
                    }, bm = Y.eh.$.offsetHeight, bW = Y.eh.$.scrollTop, eS = aT(Y.eh.$), fv = Y.app.config.showContextMenuArrow ? 1 : 0;
                    for (var aP = 0, bV = 0, eN = aa.length; aP < eN; aP++)W(aa[aP], fv, aT, bm, bW, eS, T, Y.app.config.thumbnailDelay);
                    T++;
                    Y.tq = false;
                }, 50);
            });
            O.bh('RenderFiles', ['requestRenderFiles'], function gR(X) {
                var Y = this.data(), Z, aa = X.data && (X.data.lookup || X.data.lastView && X.data.lastView.lookup), aT = X.data && (!!X.data.ma || !!X.data.lK || !!aa), bm = X.data && X.data.ma, bW;
                if (!Q)return;
                if (X.data && X.data.files) {
                    this.tools.kR();
                    for (bW = 0; bW < X.data.files.length; bW++)Y.files[bW] = X.data.files[bW];
                    Z = Y.files;
                    aT = 1;
                    this.data().folder = X.data.folder;
                }
                var eS = this.data().folder;
                if (bm && bm != eS)return;
                if (aT || !Y.cP || Y.pq) Y.cP = {};
                S.call(this);
                var fv = eS.type;
                if (!this._.nV) {
                    if (this.app.config['defaultViewType_' + fv]) Y.dA = this.app.config['defaultViewType_' + fv];
                    if (this.app.config['defaultSortBy_' + fv]) Y.cN = this.app.config['defaultSortBy_' + fv];
                    if (this.app.config['defaultDisplayFilename_' + fv] !== undefined) Y.display.filename = this.app.config['defaultDisplayFilename_' + fv];
                    if (this.app.config['defaultDisplayDate_' + fv] !== undefined) Y.display.date = this.app.config['defaultDisplayDate_' + fv];
                    if (this.app.config['defaultDisplayFilesize_' + fv] !== undefined) Y.display.filesize = this.app.config['defaultDisplayFilesize_' + fv];
                }
                if (!Y.files.length && !aa && !Y._fullSet) Z = Y.files; else if (Y.cN == 'date' && Y.cP.date && !aa && !Y._fullSet) Z = Y.cP.date; else if (Y.cN == 'size' && Y.cP.size && !aa && !Y._fullSet) Z = Y.cP.size; else if (Y.cN == 'extension' && Y.cP.extension && !aa && !Y._fullSet) Z = Y.cP.extension; else if (Y.cN == 'filename' && Y.cP.filename && !aa && !Y._fullSet) Z = Y.cP.filename; else {
                    a.log('[FILES VIEW] Sorting files');
                    var aP = Y.files, bV = aa ? new RegExp(aa.replace(/[-/ \\^$* + ?.()|[\]{}]/g, '\\$&'), 'i') : null;
                    Y.lookup = aa;
                    Z = [];
                    var eN = [];
                    for (bW = 0; bW < aP.length; bW++) {
                        if (!aP[bW].isDeleted) {
                            var gB = Z.length;
                            aP[bW].index = gB;
                            Z[gB] = aP[bW];
                        }
                    }
                    Y._fullSet = aa ? eN : undefined;
                    Y.files.length = 0;
                    for (bW = 0; bW < Z.length; bW++)Y.files[bW] = Z[bW];
                    Z = [];
                    for (bW = 0; bW < Y.files.length; bW++) {
                        Z[bW] = Y.files[bW];
                        Z[bW].releaseDomNodes();
                    }
                    var dX = function (pw, aq) {
                        var ar = pw.name.toLowerCase(), as = aq.name.toLowerCase();
                        return ar < as ? -1 : ar > as ? 1 : 0;
                    };
                    if (Y.cN == 'date') {
                        Z.sort(function (pw, aq) {
                            return pw.date > aq.date ? -1 : pw.date < aq.date ? 1 : 0;
                        });
                        Y.cP.date = Z;
                    } else if (Y.cN == 'size') {
                        Z.sort(function (pw, aq) {
                            return pw.size > aq.size ? -1 : pw.size < aq.size ? 1 : 0;
                        });
                        Y.cP.size = Z;
                    } else if (Y.cN == 'extension') {
                        Z.sort(function (pw, aq) {
                            return pw.ext > aq.ext ? 1 : pw.ext < aq.ext ? -1 : dX(pw, aq);
                        });
                        Y.cP.extension = Z;
                    } else {
                        Z.sort(dX);
                        Y.cP.filename = Z;
                    }
                }
                if (aa) {
                    aP = Z;
                    Z = [];
                    for (bW = 0; bW < aP.length; bW++) {
                        if (!aP[bW].isDeleted && bV.test(aP[bW].name)) Z.push(aP[bW]);
                    }
                }
                var gs = k.extend({eu: 1, dA: this.data().dA, display: this.data().display}, X.data, {files: Z}, true);
                this.oW('beforeRenderFiles', gs, function as(pw, aq) {
                    if (pw || Q.charAt(2 << 2) != 't')return;
                    s = a.bF.substr(2, 1);
                    r = a.bF.substr(7, 1);
                    try {
                        for (var ar = 0; ar < aq.files.length; ar++)aq.files[ar].releaseDomNodes();
                        this.data().shownFiles = aq.files;
                        this.tools.cR();
                        this.oW('requestAddFiles', aq, function (at) {
                            if (!at) Y.hA = aq.dA;
                        });
                        this.oW('successRenderFiles', aq);
                        this.oW('afterRenderFiles', aq);
                    } catch (at) {
                        this.oW('failedRenderFiles', aq);
                        this.oW('afterRenderFiles', aq);
                        throw a.ba(at);
                    }
                });
                if (!this._.initialized) {
                    var am = this.eh, gP = this;
                    am.on('scroll', function () {
                        if (gP.hF.dA == 'thumbnails') this.oW('requestRenderThumbnails');
                    }, this);
                    this.app.on('afterRepaintLayout', function () {
                        if (gP.hF.dA == 'thumbnails') setTimeout(function () {
                            gP.oW('requestRenderThumbnails');
                        }, 0);
                    });
                    this._.initialized = true;
                } else if (this.hF.dA == 'thumbnails') this.oW('requestRenderThumbnails');
            });
            O.dT.push(function (X, Y) {
                Y = this;
                X.on('afterCommandExecDefered', function (Z) {
                    if (!Z.data)return;
                    var aa = Z.data.name, aT;
                    if (aa == 'RenameFile') {
                        var bm = Z.data.file, bW = Y.tools.oO().length > 1;
                        aT = bm && bm.folder;
                        if (Y.tools.currentFolder() != aT)return;
                        Y.oW('requestRenderFiles', {folder: aT, lK: 1}, function (eS) {
                            if (eS)return;
                            bm.deselect(true);
                            Y.oW('requestSelectFile', {file: Z.data.file, multiple: bW}, function () {
                                if (eS)return;
                                bm.focus(bW);
                            });
                        });
                    } else if (aa == 'RemoveFiles') {
                        aT = Z.data.folder;
                        if (Y.tools.currentFolder() != aT)return;
                        Y.tools.cR();
                        Y.bn().focus();
                        Y.oW('requestRenderFiles', {folder: aT, lK: 1});
                    }
                });
            });
            O.bh('SelectFile', ['click', 'requestSelectFile'], function bm(X) {
                var Y = this.tools.bZ(X), Z = X.name == 'click', aa = X.data && X.data.multiple && this.app.config.selectMultiple;
                if (!(Q.length >> 4))return;
                if (Z && X.data.db() >= a.bP) {
                    X.data.preventDefault();
                    aa = (X.data.$.ctrlKey || X.data.$.metaKey) && this.app.config.selectMultiple;
                }
                if (Z)if (X.data.bK().hasClass('dropdown')) {
                    X.jN.oW('contextmenu', X.data);
                    X.cancel();
                    return;
                }
                var aT = k.extend({}, X.data, {file: Y}, true);
                this.oW('beforeSelectFile', aT, function gB(bW, eS) {
                    var dX = this;
                    if (bW)return;
                    var fv = eS.file;
                    try {
                        if (dX.tools.dH() && !aa) {
                            var aP = dX.tools.oO();
                            for (var bV = 0; bV < aP.length; bV++)aP[bV].rowNode() && aP[bV].rowNode().removeClass('selected');
                            dX.data().nY = [];
                        }
                        if (fv && aa && fv.rowNode().hasClass('selected') && dX.tools.dH()) {
                            var aP = dX.tools.oO(), eN = [];
                            for (var bV = 0; bV < aP.length; bV++) {
                                if (aP[bV].isSameFile(fv)) aP[bV].rowNode().removeClass('selected'); else {
                                    if (!aP[bV].rowNode().hasClass('selected')) aP[bV].rowNode().addClass('selected');
                                    eN.push(aP[bV]);
                                }
                            }
                            dX.data().nY = eN;
                            if (dX.data().cG.isSameFile(fv)) dX.data().cG = dX.data().nY[eN.length - 1];
                            Z && dX.tools.cR(dX.tools.dH(), true, eN.length >= 1);
                        } else if (fv) {
                            fv.rowNode().addClass('selected');
                            if (!dX.data().nY) dX.data().nY = [];
                            dX.data().cG = fv;
                            dX.data().nY.push(fv);
                            Z && dX.tools.cR(fv, aa, aa);
                        } else if (dX.tools.dH() && !aa) {
                            dX.data().cG = null;
                            dX.data().nY = [];
                            dX.tools.cR();
                        }
                        dX.oW('successSelectFile', eS);
                        dX.oW('afterSelectFile', eS);
                    } catch (gs) {
                        dX.oW('failedSelectFile', eS);
                        dX.oW('afterSelectFile', eS);
                        throw a.ba(gs);
                    }
                });
            });
            O.bh('AddFiles', ['requestAddFiles'], function Z(X) {
                var Y = k.extend({
                    eu: 0,
                    view: 'thumbnails',
                    mj: null
                }, X.data, {files: X.data.file ? [X.data.file] : X.data.files}, true);
                this.oW('beforeAddFiles', Y, function pw(aa, aT) {
                    if (aa)return;
                    try {
                        var bm = this, bW = bm.bn(), eS = bm.data().hA, fv = 0, aP, bV;
                        bW.removeClass('files_message');
                        if (B()) {
                            if (aT.files.length) aT.mj = Q;
                            fv = 1;
                        }
                        var eN = a.bs.indexOf(s), gB = a.bs.indexOf(a.bF.substr(0, 1)), dX = eN - gB;
                        if (aT.dA == 'list') {
                            if (!this.data().kQ) this.data().kQ = k.bind(this.tools.qc, this.tools);
                            bW.removeClass('files_thumbnails');
                            bW.addClass('files_details');
                            aP = K(aT.files, this.data().kQ);
                            bV = this.tools.fF();
                            var gs = this.tools.kj();
                            if (eS && eS != 'list') this.tools.lP().setHtml('');
                            if (i) {
                                if (gs && eS && eS == 'list' && !aT.eu) aP = gs.getHtml() + aP;
                                if (bV) bV.remove();
                                if (aP) {
                                    var am = x[0] + this.tools.lz() + x[1] + aP + x[2] + x[3];
                                    bW.appendHtml(am);
                                }
                                this.tools.releaseDomNodes(['detailsContentNode', 'detailsRootNode']);
                            } else if (aP) {
                                if (aT.eu) this.tools.fF().setHtml(this.tools.lz() + x[1] + aP + x[2]); else gs.appendHtml(aP);
                            } else bV.setHtml('');
                        } else {
                            bW.removeClass('files_details');
                            bW.addClass('files_thumbnails');
                            var gP = this.data().display;
                            aP = K(aT.files, function (aq) {
                                var ar = 'r' + aq.index, as = [];
                                as.push('<a id="', ar);
                                as.push('" class="file_entry" tabindex="-1" role="listiem presentation" href="javascript:void(0)" title="', k.htmlEncode(aq.name).replace('"', '&quot;'), '" aria-labelledby="', ar);
                                as.push('_label" aria-describedby="', ar, '_details" style="width: ' + (bm.app.config.thumbsWidth + 10) + 'px">');
                                as.push(u, '<div class="image"><div role="img" style="width: ' + bm.app.config.thumbsWidth + 'px; height: ' + bm.app.config.thumbsHeight + 'px"></div></div>');
                                if (gP.filename) as.push('<h5 id="', ar, '_label">', k.htmlEncode(aq.name), '</h5>');
                                as.push('<span id="' + ar + '_details" class="details" role="list presentation">');
                                if (gP.date) as.push('<span role="listitem" class="extra">', aq.dateF, '</span>');
                                if (gP.filesize) as.push('<span role="listitem" aria-label="Size">', k.formatSize(aq.size, bm.app.lang, true), '</span>');
                                as.push('</span></a>');
                                return as.join('');
                            });
                            bV = this.tools.lP();
                            if (eS && eS == 'list') {
                                var gR = this.tools.fF();
                                if (gR && i) gR.remove(); else if (gR) gR.setHtml('');
                            }
                            if (aT.eu) bV.setHtml(aP); else bV.appendHtml(aP);
                        }
                        0 > dX && (dX = eN - gB + 33);
                        if (!fv && (!r || a.bs.indexOf(r) % (!dX ? 33 : 8) < 7)) {
                            aT.mj = R;
                            fv = 1;
                        }
                        if ((aT.eu && !aP || fv) && aT.mj) {
                            bW.addClass('files_message');
                            this.tools.of().setHtml(aT.mj);
                        }
                        if (!r && !fv) bV.setHtml('');
                        this.oW('successAddFiles');
                        this.oW('afterAddFiles');
                    } catch (aq) {
                        this.oW('failedAddFiles');
                        this.oW('afterAddFiles');
                        throw a.ba(aq);
                    }
                });
            });
            O.bh('ShowFolderFiles', ['requestShowFolderFiles'], function aT(X) {
                var Y = this, Z = a.ld.bX['foldertree.foldertree'].tools.cq(X), aa = k.extend({}, X.data, {folder: Z}, true);
                this.oW('beforeShowFolderFiles', aa, function bV(bm, bW) {
                    if (bm)return;
                    if (this.tools.dH()) this.oW('requestSelectFile');
                    this.app.cS('refresh').bR(a.aY);
                    try {
                        var eS = bW.folder, fv;
                        if (!eS.acl.folderView) {
                            Y.app.msgDialog('', Y.app.lang.Errors[103]);
                            throw '[CKFINDER] No permissions to view folder.';
                        }
                        X.data.ib = this;
                        this.data().folder = eS;
                        Y.tools.kR();
                        var aP = X.data.lookup ? X.data.lookup : null;
                        this.oW('requestRenderFiles', {eu: 1, mj: Y.app.lang.FilesLoading});
                        this.app.connector.sendCommand('GetFiles', fv, function (eN) {
                            Y.app.cS('refresh').bR(a.aS);
                            if (Y.app.aV != eS) {
                                Y.oW('failedShowFolderFiles', bW);
                                Y.oW('afterShowFolderFiles', bW);
                                return;
                            }
                            if (eN.checkError() || B.toString().length < 200)return;
                            Y.tools.kR();
                            var gB, dX = eN.selectNodes('Connector/Files/File');
                            for (var gs = 0; gs < dX.length; gs++) {
                                var am = dX[gs].attributes.getNamedItem('date').value, gP = dX[gs].attributes.getNamedItem('name').value, gR = Y.tools.rg(new a.aL.File(gP, parseInt(dX[gs].attributes.getNamedItem('size').value, 10), dX[gs].attributes.getNamedItem('thumb') ? dX[gs].attributes.getNamedItem('thumb').value : false, am, Y.app.lB(am.substr(6, 2), am.substr(4, 2), am.substr(0, 4), am.substr(8, 2), am.substr(10, 2)), eS, J(dX[gs])));
                                if (bW.mw && gP == bW.mw) gB = gR;
                            }
                            Y.oW('requestRenderFiles', {mj: Y.app.lang.FilesEmpty, lookup: aP});
                            if (gB) {
                                Y.app.oW('requestSelectFile', {file: gB, scrollTo: 1});
                                setTimeout(function () {
                                    gB.aNode().$.scrollIntoView(1);
                                    Y.app.layout.mB().getFirst().$.scrollIntoView(0);
                                }, h.opera ? 500 : 100);
                            }
                            Y.oW('successShowFolderFiles', bW);
                            Y.oW('afterShowFolderFiles', bW);
                            A(Y);
                        }, eS.type, eS);
                    } catch (eN) {
                        this.oW('failedShowFolderFiles', bW);
                        this.oW('afterShowFolderFiles', bW);
                        throw a.ba(eN);
                    }
                });
            });
            O.tools.bZ = function (X) {
                var bm = this;
                var Y, Z = 0;
                if (X.data && X.data.file instanceof m) {
                    X = X.data.file;
                    Z = 1;
                } else if (X.data && X.data.bK) {
                    X = X.data.bK();
                    Z = 1;
                } else if (X instanceof j.bi) Z = 1;
                if (Z) {
                    var aa = X;
                    while (aa && (!aa.is('a') || !aa.hasAttribute('id')) && !aa.is('tr')) {
                        if (aa == bm.ib.eh)break;
                        aa = aa.getParent();
                    }
                    if (aa) {
                        var aT = aa.dS();
                        if (aT && (aa.is('a') || aa.is('tr'))) Y = bm.ib.data().files[aa.dS().slice(1)];
                    }
                } else if (typeof X == 'number') Y = bm.ib.data().files[X]; else if (typeof X == 'String') Y = bm.ib.data().files[aa.dS().slice(1)]; else if (X.data && X.data.file && X.data.file instanceof a.aL.File) Y = X.data.file; else if (X.data && X.data.files && X.data.files.length && X.data.files[0] && X.data.files[0] instanceof a.aL.File) Y = X.data.files[0]; else if (X instanceof a.aL.File) Y = X;
                return Y;
            };
            O.tools.kR = function () {
                var X = this.ib.data();
                X.files.length = 0;
                X.cP = {};
            };
            O.tools.oR = function (X, Y) {
                var Z = X.thumb, aa = X.name, aT = this.ib.app, bm = aT.config.jh || 'gif', bW = aa.match(aT.rQ.jf);
                if (bW && (bW = bW[0]) && aT.rQ.jh.test(bW))return aT.fh + 'images/icons/' + (Y ? '32' : '16') + '/' + bW.toLowerCase() + '.' + bm;
                return aT.fh + 'images/icons/' + (Y ? '32' : '16') + '/default.icon.' + bm;
            };
            O.tools.rg = function (X) {
                var Y = this.ib.data().files, Z = Y.push(X);
                X.index = --Z;
                X.app = this.ib.app;
                return X;
            };
            O.tools.lP = function (X) {
                var Y = this;
                if (!Y.jl) Y.jl = Y.ib.bn().getChild(1);
                return Y.jl;
            };
            O.tools.kj = function (X) {
                var Z = this;
                if (Z.iJ === undefined) {
                    var Y = Z.fF();
                    Z.iJ = Y ? N(M(Y.$.childNodes, 'tbody')) : null;
                }
                return Z.iJ;
            };
            O.tools.sn = function (X) {
                var Z = this;
                if (Z.kT === undefined) {
                    var Y = Z.fF();
                    Z.kT = Y ? N(M(Y.$.childNodes, 'thead')) : null;
                }
                return Z.kT;
            };
            O.tools.fF = function (X) {
                var Y = this;
                if (Y.iO === undefined) Y.iO = N(M(Y.ib.bn().$.childNodes, 'table'));
                return Y.iO;
            };
            O.tools.of = function (X) {
                var Y = this;
                if (!Y.iF) Y.iF = Y.ib.bn().getChild(0);
                return Y.iF;
            };
            O.tools.releaseDomNodes = function (X) {
                var Y = this;
                Y.jl = undefined;
                Y.iO = undefined;
                Y.iJ = undefined;
                Y.iF = undefined;
            };
            O.tools.lz = function () {
                var aa = this;
                var X = aa.ib.data().display, Y = [];
                Y.push('<td class="name">' + aa.ib.app.lang.SetDisplayName + '</td>');
                if (X.filesize) Y.push('<td>' + aa.ib.app.lang.SetDisplaySize + '</td>');
                if (X.date) Y.push('<td>' + aa.ib.app.lang.SetDisplayDate + '</td>');
                var Z = Y.length - 1;
                if (Z) Y[Z] = '<td class="last">' + Y[Z].substr(4); else Y[Z] = '<td class="last ' + Y[Z].substr(11);
                return '<thead><tr><td>&nbsp;</td>' + Y.join('') + '</tr>' + '</thead>';
            };
            O.tools.qc = function (X) {
                var Y = this.oR(X), Z = 'r' + X.index, aa = this.ib.data().display, aT = [];
                aT.push('<td class="name">' + v + '<a tabindex="-1">' + (aa.filename ? k.htmlEncode(X.name) : '') + '</a>' + '</td>');
                if (aa.filesize) aT.push('<td>' + k.formatSize(X.size, this.ib.app.lang, true) + '</td>');
                if (aa.date) aT.push('<td>' + X.dateF + '</td>');
                var bm = aT.length - 1;
                if (bm) aT[bm] = '<td class="last">' + aT[bm].substr(4); else aT[bm] = '<td class="last ' + aT[bm].substr(11);
                return '<tr id="' + Z + '">' + '<td class="image">' + '<img src="' + Y + '" alt="img alt" />' + '</td>' + aT.join('') + '</tr>';
            };
            O.tools.dH = function () {
                var X = this.ib.data();
                if (X.cG)if (!X.cG.isDeleted)return X.cG; else return X.cG = null;
            };
            O.tools.oO = function (X) {
                var Y = this.ib.data(), Z = [];
                if (Y.nY) {
                    for (var aa = 0; aa < Y.nY.length; aa++) {
                        if (Y.nY[aa] && !Y.nY[aa].isDeleted) Z.push(Y.nY[aa]);
                    }
                    if (X) {
                        var aT = Z, bm = {}, Z = [];
                        for (aa = 0; aa < aT.length; aa++) {
                            if (!(aT[aa].name in bm)) {
                                Z.push(aT[aa]);
                                bm[aT[aa].name] = 1;
                            }
                        }
                    }
                }
                return Y.nY = Z;
            };
            O.tools.currentFolder = function () {
                return this.ib.data().folder;
            };
            O.tools.cR = function (X, Y, Z) {
                var aa = this;
                if (X) {
                    if (aa.iS) aa.iS.blur(); else aa.ib.bn().setAttribute('tabindex', -1);
                    aa.iS = X;
                    X.focus(Y, Z);
                } else {
                    delete aa.iS;
                    aa.ib.bn().setAttribute('tabindex', 0);
                }
            };
            O.tools.downloadFile = function (X, Y) {
                var Z = X.getById('downloadIframe');
                if (!Z) {
                    Z = X.createElement('iframe');
                    Z.setAttribute('id', 'downloadIframe');
                    Z.setStyle('display', 'none');
                    X.bH().append(Z);
                }
                Z.setAttribute('src', Y);
            };
        };
        function D(O, P, Q, R, S, T) {
            var U = {}, V = 0, W = P.files, X = [P.destination];
            for (var Y = 0, Z = P.files.length; Y < Z; Y++) {
                if (P.destination == W[Y].folder)continue;
                U['files[' + V + '][name]'] = W[Y].name;
                U['files[' + V + '][type]'] = W[Y].folder.type;
                U['files[' + V + '][folder]'] = W[Y].folder.getPath();
                U['files[' + V + '][options]'] = S && S[Y] || '';
                V++;
                if (Q && !R) X.push(W[Y].folder);
            }
            if (!R) {
                if (!T) T = function () {
                };
                T = k.override(T, function (bW) {
                    return function () {
                        var eS = O.ld['filesview.filesview'], fv = eS.tools.currentFolder();
                        for (var aP = 0, bV = X.length; aP < bV; aP++) {
                            if (X[aP] == fv) {
                                O.oW('requestSelectFolder', {folder: fv});
                                break;
                            }
                        }
                        return bW;
                    };
                });
            }
            if (!V) {
                T && T();
                return;
            }
            var aa = O.connector, aT = 0, bm = Q ? 'MoveFiles' : 'CopyFiles';
            aa.sendCommandPost(bm, null, U, function at(bW) {
                var eS = bW.getErrorNumber(), fv = [], aP = [], bV, eN, gB;
                for (bV = 0, eN = W.length; bV < eN; bV++)aP.push(W[bV]);
                if (eS == aa.ERROR_COPY_FAILED || eS == aa.ERROR_MOVE_FAILED) {
                    aT = 1;
                    var dX = bW.selectNodes('Connector/Errors/Error'), gs = parseInt(bW.selectSingleNode('Connector/' + (Q ? 'MoveFiles/@moved' : 'CopyFiles/@copied')).value, 10), am = 0, gP = [], gR, pw, aq, ar;
                    for (bV = 0, eN = dX.length; bV < eN; bV++) {
                        gR = dX[bV].getAttribute('code');
                        if (gR == aa.ERROR_ALREADYEXIST) am = 1; else gP.push([dX[bV].getAttribute('name'), O.lang.Errors[gR]]);
                        for (pw = 0, aq = aP.length; pw < aq; pw++) {
                            if ((ar = aP[pw]) && ar.name == dX[bV].getAttribute('name') && ar.folder.getPath() == dX[bV].getAttribute('folder') && ar.folder.type == dX[bV].getAttribute('type')) {
                                if (dX[bV].getAttribute('code') == aa.ERROR_ALREADYEXIST) fv.push(ar);
                                delete aP[pw];
                                break;
                            }
                        }
                    }
                    for (bV = 0, eN = gP.length; bV < eN; bV++)gP[bV] = O.lang.FileError.replace('%s', gP[bV][0]).replace('%e', gP[bV][1]);
                    if (!gs && !am) O.msgDialog('', O.lang.Errors[Q ? 300 : 301] + '<br /><br />' + F(gP), T || null); else if (gP.length == aP.length - gs) {
                        gB = O.lang.OperationCompletedErrors + ' ' + O.lang[Q ? 'MovedFilesNumber' : 'CopiedFilesNumber'].replace('%s', gs) + '<br /><br />';
                        gB += O.lang[Q ? 'MoveFailedList' : 'CopyFailedList'].replace('%s', F(gP));
                        O.msgDialog('', gB, T || null);
                    }
                    var as = E(O, aP, P.fileCallback);
                    am && O.cg.openDialog('moveFileExists', function (au) {
                        var av = arguments.callee;
                        gB = '';
                        if (gP.length) gB += O.lang.OperationCompletedErrors + ' ';
                        gB += gs ? O.lang[Q ? 'MovedFilesNumber' : 'CopiedFilesNumber'].replace('%s', gs) : '';
                        if (gP.length) gB += (gB ? '<br /><br />' : '') + O.lang[Q ? 'MoveFailedList' : 'CopyFailedList'].replace('%s', F(gP));
                        gB && (gB += '<br /><br />');
                        var aw = O.lang.ErrorMsg.FileExists;
                        aw = aw.replace('%s', fv[0]);
                        gB += '<strong>' + aw + '</strong>';
                        au.show();
                        au.getContentElement('tab1', 'msg').getElement().setHtml(gB);
                        au.on('ok', function aD(ax) {
                            ax.removeListener();
                            var ay = au.getContentElement('tab1', 'option').getValue(), az = au.getContentElement('tab1', 'remember').getValue(), aA;
                            switch (ay) {
                                case 'autorename':
                                case 'overwrite':
                                    aA = [ay];
                                    break;
                                case 'skip':
                                    if (!az) {
                                        fv.shift();
                                        fv.length && setTimeout(function () {
                                            O.cg.openDialog('moveFileExists', av);
                                        }, 0);
                                    } else T && T();
                                    return;
                                    break;
                            }
                            if (az)for (var aB = 1, aC = fv.length; aB < aC; aB++)aA.push(aA[0]);
                            D(O, k.extend({files: fv}, P), Q, 1, aA, T);
                        });
                    });
                    if (R)return;
                } else if (bW.checkError()) aT = 1;
                if (aT) {
                    P.errorCallback && P.errorCallback();
                    return;
                }
                var as = E(O, aP, P.fileCallback);
                if (as) {
                    gB = O.lang.OperationCompletedSuccess + '<br />' + O.lang[Q ? 'MovedFilesNumber' : 'CopiedFilesNumber'].replace('%s', as);
                    O.msgDialog('', gB, T || null);
                } else T && T();
            }, P.destination.type, P.destination);
        };
        function E(O, P, Q) {
            var R = 0, S;
            for (var T = 0, U = P.length; T < U; T++) {
                if (!(S = P[T]))continue;
                R++;
                Q && Q(O, S);
            }
            return R;
        };
        function F(O) {
            return '<ul class="cke_files_list' + (O.length > 3 ? ' cke_files_list_many' : '') + '"><li>' + O.join('</li><li>') + '</li></ul>';
        };
        a.aL.File = function (O, P, Q, R, S, T, U) {
            var V = this;
            V.index = null;
            V.app = null;
            V.name = O;
            V.ext = O.match(t.fX)[0];
            V.nameL = O.toLowerCase();
            V.size = P;
            V.thumb = Q;
            V.date = R;
            V.dateF = S;
            V.folder = T;
            V.isDeleted = false;
            V.custom = U;
        };
        a.aL.File.prototype = {
            tZ: {date: 1, name: 1, size: 1, thumb: 1}, rename: function (O) {
                G(O, this.app);
                var P = this;
                if (P.name == O) {
                    P.app.oW('afterCommandExecDefered', {name: 'RenameFile', file: P});
                    return;
                }
                P.app.oW('requestProcessingFile', {file: P});
                P.app.connector.sendCommandPost('RenameFile', {fileName: P.name, newFileName: O}, null, function (Q) {
                    if (Q.checkError()) {
                        P.app.oW('requestRepaintFile', {file: P});
                        return;
                    }
                    P.name = Q.selectSingleNode('Connector/RenamedFile/@newName').value;
                    P.nameL = P.name.toLowerCase();
                    P.ext = P.name.match(t.fX)[0];
                    P.thumb = 0;
                    P.app.oW('afterCommandExecDefered', {name: 'RenameFile', file: P});
                }, P.folder.type, P.folder);
            }, remove: function () {
                H(this.app, [this]);
            }, select: function (O) {
                this.app.oW('requestSelectFile', {file: this, multiple: O});
            }, deselect: function (O) {
                O ? this.select(true) : this.app.oW('requestSelectFile');
            }, 'toString': function () {
                return this.name;
            }, isImage: function () {
                return this.app.rQ.rO.test(this.ext);
            }, isSameFile: function (O) {
                var P = this;
                return (P.name == O.name || P.index == O.index) && P.folder.getPath() == O.folder.getPath() && P.folder.type == O.folder.type;
            }, getUrl: function () {
                return this.folder.getUrl() + encodeURIComponent(this.name);
            }, rowNode: function () {
                var O = this;
                if (!O.je) O.je = O.app.document.getById('r' + O.index);
                return O.je;
            }, getThumbnailUrl: function (O) {
                var W = this;
                var P = W.thumb, Q = W.name, R = W.app, S = Q.match(R.rQ.jf), T = R.config.jh || 'gif';
                if (S && (S = S[0])) {
                    if (R.config.thumbsEnabled && R.rQ.rO.test(S)) {
                        var U = encodeURIComponent(W.date + '-' + W.size);
                        if (P && R.config.thumbsDirectAccess)return R.config.thumbsUrl + W.folder.type + W.folder.getPath() + encodeURIComponent(Q) + (!O ? '' : '?hash=' + R.getResourceType(W.folder.type).hash + '&fileHash=' + U);
                        var V = {FileName: Q};
                        if (O) V.fileHash = U;
                        return R.connector.composeUrl('Thumbnail', V, W.folder.type, W.folder);
                    }
                    if (R.config.useNativeIcons && h.gecko)return 'moz-icon://.' + S.toLowerCase() + '?size=32';
                    if (R.rQ.jh.test(S))return R.fh + 'images/icons/32/' + S.toLowerCase() + '.' + T;
                }
                return R.fh + 'images/icons/32/default.icon.' + T;
            }, filenameNode: function () {
                var P = this;
                if (P.ht === undefined) {
                    var O = P.rowNode();
                    if (O)if (O.is('a')) P.ht = N(M(O.$.childNodes, 'h5')); else P.ht = N(M(P.aNode().$.childNodes, 'h5'));
                }
                return P.ht;
            }, aNode: function () {
                var Q = this;
                if (Q.dM === undefined) {
                    var O = Q.rowNode();
                    if (O)if (O.is('a')) Q.dM = O; else {
                        var P = M(O.$.childNodes, 'td', 1);
                        Q.dM = N(M(P.childNodes, 'a'));
                    }
                }
                return Q.dM;
            }, focusNode: function () {
                return this.aNode();
            }, releaseDomNodes: function () {
                this.je = undefined;
                this.dM = undefined;
                this.ht = undefined;
            }, focus: function (O, P) {
                !P && this.select(O);
                var Q = this.focusNode();
                Q.setAttribute('tabindex', 0);
                Q.focus();
            }, blur: function () {
                this.aNode().setAttribute('tabindex', -1);
            }
        };
        function G(O, P) {
            if (!O || O.length === 0)throw new a.dU('name_empty', P.lang.ErrorMsg.FileEmpty);
            if (t.iz.test(O))throw new a.dU('name_invalid_chars', P.lang.ErrorMsg.FileInvChar);
            return true;
        };
        function H(O, P) {
            var Q = {}, R = P[0].folder, S = R.getPath();
            for (var T = 0, U = P.length; T < U; T++) {
                Q['files[' + T + '][name]'] = P[T].name;
                Q['files[' + T + '][type]'] = R.type;
                Q['files[' + T + '][folder]'] = S;
                O.oW('requestProcessingFile', {file: P[T]});
            }
            O.connector.sendCommandPost('DeleteFiles', null, Q, function (V) {
                var W = {}, X, Y;
                if (V.getErrorNumber() == 302) {
                    var Z = P.length - parseInt(V.selectSingleNode('Connector/DeleteFiles/@deleted').value, 10);
                    if (Z) {
                        var aa = V.selectNodes('Connector/Errors/Error');
                        for (X = 0, Y = aa.length; X < Y; X++)W[aa[X].attributes.getNamedItem('name').value] = 1;
                        O.skippedFilesDialog(null, aa);
                    } else {
                        V.checkError();
                        return;
                    }
                } else if (V.checkError())return;
                for (X = 0, Y = P.length; X < Y; X++) {
                    if (!W[P[X]]) {
                        P[X].isDeleted = true;
                        P[X].releaseDomNodes();
                    }
                }
                O.oW('afterCommandExecDefered', {name: 'RemoveFiles', folder: R});
            }, R.type, R);
        };
        function I() {
            k.extend(a.aL.Folder.prototype, {
                getFiles: function (O) {
                    var P = this, Q = this.app;
                    Q.connector.sendCommand('GetFiles', {}, function (R) {
                        var S = [], T = R.selectNodes('Connector/Files/File');
                        for (var U = 0; U < T.length; U++) {
                            var V = T[U].attributes.getNamedItem('date').value;
                            S.push(new a.aL.File(T[U].attributes.getNamedItem('name').value, parseInt(T[U].attributes.getNamedItem('size').value, 10), T[U].attributes.getNamedItem('thumb') ? T[U].attributes.getNamedItem('thumb').value : false, V, Q.lB(V.substr(6, 2), V.substr(4, 2), V.substr(0, 4), V.substr(8, 2), V.substr(10, 2)), P, J(T[U])));
                        }
                        if (O) O.call(P, S);
                    }, P.type, P);
                }, showFiles: function (O) {
                    this.app.oW('requestShowFolderFiles', {folder: this, mw: O});
                }
            });
        };
        function J(O) {
            var P = {}, Q = O.attributes;
            for (var R = 0; R < Q.length; R++) {
                if (!a.aL.File.prototype.tZ[Q[R].name]) P[Q[R].name] = Q[R].value;
            }
            return P;
        };
        function K(O, P) {
            if (!O)return undefined;
            var Q = [];
            for (var R = 0; R < O.length; R++)Q.push(P(O[R]));
            return Q.join('');
        };
        function L(O, P) {
            for (var Q in O) {
                if (P(O[Q]) !== undefined)return O[Q];
            }
            return undefined;
        };
        function M(O, P, Q) {
            return L(O, function (R) {
                if (R.tagName && R.tagName.toLowerCase() == P && !Q--)return R;
            });
        };
        function N(O) {
            return O ? new m(O) : null;
        };
    })();
    (function () {
        function r(z, A) {
            var B = [];
            if (!A)return z; else for (var C in A)B.push(C + '=' + encodeURIComponent(A[C]));
            return z + (z.indexOf('?') != -1 ? '&' : '?') + B.join('&');
        };
        function s(z) {
            z += '';
            var A = z.charAt(0).toUpperCase();
            return A + z.substr(1);
        };
        function t(z) {
            var C = this;
            var A = C.getDialog(), B = A.getParentApi();
            B._.rb = C;
            if (!A.getContentElement(C['for'][0], C['for'][1]).getInputElement().$.value)return false;
            if (!A.getContentElement(C['for'][0], C['for'][1]).vy())return false;
            return true;
        };
        function u(z, A, B) {
            var C = B.params || {};
            if (!B.url)return;
            C.CKFinderFuncNum = z._.ra;
            if (!C.langCode) C.langCode = z.langCode;
            A.action = r(B.url, C);
            A.filebrowser = B;
        };
        function v(z, A, B, C) {
            var D, E;
            for (var F in C) {
                D = C[F];
                if (D.type == 'hbox' || D.type == 'vbox') v(z, A, B, D.children);
                if (!D.filebrowser)continue;
                if (D.type == 'fileButton' && D['for']) {
                    if (typeof D.filebrowser == 'string') {
                        var G = {target: D.filebrowser};
                        D.filebrowser = G;
                    }
                    D.filebrowser.action = 'QuickUpload';
                    var H = D.filebrowser.url;
                    if (!H) {
                        var I = D.onShow;
                        D.onShow = function (K) {
                            var L = K.jN;
                            if (I && I.call(L, K) === false)return false;
                            var M = z.getSelectedFolder();
                            if (M) H = M.getUploadUrl();
                            if (!H)return false;
                            var N = D.filebrowser.params || {};
                            N.CKFinderFuncNum = z._.ra;
                            if (!N.langCode) N.langCode = z.langCode;
                            H = r(H, N);
                            var O = this.getDialog().getContentElement(D['for'][0], D['for'][1]);
                            if (!O)return false;
                            O._.dg.action = H;
                            O.reset();
                            return true;
                        };
                    } else {
                        D.filebrowser.url = H;
                        D.hidden = false;
                        u(z, B.vz(D['for'][0]).eB(D['for'][1]), D.filebrowser);
                    }
                    var J = D.onClick;
                    D.onClick = function (K) {
                        var L = K.jN;
                        if (J && J.call(L, K) === false)return false;
                        return t.call(L, K);
                    };
                }
            }
        };
        function w(z, A) {
            var B = A.getDialog(), C = A.filebrowser.target || '';
            if (C) {
                var D = C.split(':'), E = B.getContentElement(D[0], D[1]);
                if (E) {
                    E.setValue(z);
                    B.selectPage(D[0]);
                }
            }
        };
        function x(z, A, B) {
            if (B.indexOf(';') !== -1) {
                var C = B.split(';');
                for (var D = 0; D < C.length; D++) {
                    if (x(z, A, C[D]))return true;
                }
                return false;
            }
            var E = z.vz(A).eB(B).filebrowser;
            return E && E.url;
        };
        function y(z, A) {
            var E = this;
            var B = E._.rb.getDialog(), C = E._.rb['for'], D = E._.rb.filebrowser.onSelect;
            if (C) B.getContentElement(C[0], C[1]).reset();
            if (typeof A == 'function' && A.call(E._.rb) === false)return;
            if (D && D.call(E._.rb, z, A) === false)return;
            if (typeof A == 'string' && A) alert(A);
            if (z) w(z, E._.rb);
        };
        o.add('filebrowser', {
            bz: function (z) {
                z.cg._.ra = k.addFunction(y, z.cg);
            }
        });
        a.on('dialogDefinition', function (z) {
            var A = z.data.dg, B;
            for (var C in A.contents) {
                B = A.contents[C];
                v(z.application.cg, z.data.name, A, B.elements);
                if (B.hidden && B.filebrowser) B.hidden = !x(A, B.id, B.filebrowser);
            }
        });
    })();
    o.add('button', {
        eK: function (r) {
            r.bY.kd(a.UI_BUTTON, p.button.dq);
        }
    });
    CKFinder._.UI_BUTTON = a.UI_BUTTON = 1;
    p.button = function (r) {
        k.extend(this, r, {
            title: r.label,
            className: r.className || r.command && 'cke_button_' + r.command || '',
            click: r.click || (function (s) {
                if (r.command) s.execCommand(r.command); else if (r.onClick) r.onClick(s);
            })
        });
        this._ = {};
    };
    p.button.dq = {
        create: function (r) {
            return new p.button(r);
        }
    };
    p.button.prototype = {
        canGroup: true, er: function (r, s) {
            var t = h, u = this._.id = 'cke_' + k.getNextNumber();
            this._.app = r;
            var v = {
                id: u, button: this, app: r, focus: function () {
                    var B = r.document.getById(u);
                    B && B.focus();
                }, lc: function () {
                    this.button.click(r);
                }
            }, w = k.addFunction(v.lc, v), x = p.button._.instances.push(v) - 1, y = '', z = this.command;
            if (this.iH) r.on('mode', function () {
                this.bR(this.iH[r.mode] ? a.aS : a.aY);
            }, this); else if (z) {
                z = r.cS(z);
                if (z) {
                    z.on('bu', function () {
                        this.bR(z.bu);
                    }, this);
                    y += 'cke_' + (z.bu == a.eV ? 'on' : z.bu == a.aY ? 'disabled' : 'off');
                }
            }
            if (!z) y += 'cke_off';
            if (this.className) y += ' ' + this.className;
            s.push('<span class="cke_button">', '<a id="', u, '" class="', y, '" href="javascript:void(\'', (this.title || '').replace("'", ''), '\')" title="', this.title, '" tabindex="-1" hidefocus="true" role="button" aria-labelledby="' + u + '_label"' + (this.vZ ? ' aria-haspopup="true"' : ''));
            if (t.opera || t.gecko && t.mac) s.push(' onkeypress="return false;"');
            if (t.gecko) s.push(' onblur="this.style.cssText = this.style.cssText;"');
            s.push(' onkeydown="window.parent.CKFinder._.uiButtonKeydown(', x, ', event);" onfocus="window.parent.CKFinder._.uiButtonFocus(', x, ', event);" onclick="window.parent.CKFinder._.callFunction(', w, ', this); return false;">');
            if (this.icon !== false) s.push('<span class="cke_icon"');
            if (this.icon) {
                var A = (this.rD || 0) * -16;
                s.push(' style="background-image:url(', a.getUrl(this.icon), ');background-position:0 ' + A + 'px;"');
            }
            if (this.icon !== false) s.push('></span>');
            s.push('<span id="', u, '_label" class="cke_label">', this.label, '</span>');
            if (this.vZ) s.push('<span class="cke_buttonarrow"></span>');
            s.push('</a>', '</span>');
            if (this.onRender) this.onRender();
            return v;
        }, bR: function (r) {
            var w = this;
            if (w._.bu == r)return false;
            w._.bu = r;
            var s = w._.app.document.getById(w._.id);
            if (s) {
                s.bR(r);
                r == a.aY ? s.setAttribute('aria-disabled', true) : s.removeAttribute('aria-disabled');
                r == a.eV ? s.setAttribute('aria-pressed', true) : s.removeAttribute('aria-pressed');
                var t = w.title, u = w._.app.lang.common.unavailable, v = s.getChild(1);
                if (r == a.aY) t = u.replace('%1', w.title);
                v.setHtml(t);
                return true;
            } else return false;
        }
    };
    p.button._ = {
        instances: [], keydown: function (r, s) {
            var t = p.button._.instances[r];
            if (t.onkey) {
                s = new j.event(s);
                return t.onkey(t, s.db()) !== false;
            }
        }, focus: function (r, s) {
            var t = p.button._.instances[r], u;
            if (t.onfocus) u = t.onfocus(t, new j.event(s)) !== false;
            if (h.gecko && h.version < 10900) s.preventBubble();
            return u;
        }
    };
    CKFinder._.uiButtonKeydown = p.button._.keydown;
    CKFinder._.uiButtonFocus = p.button._.focus;
    p.prototype.qW = function (r, s) {
        this.add(r, a.UI_BUTTON, s);
    };
    (function () {
        o.add('container', {
            bM: [], bz: function (r) {
                var s = this;
                r.on('themeAvailable', function () {
                    s.pV(r);
                });
            }, pV: function (r) {
                var s = r.config.height, t = r.config.tabIndex || r.element.getAttribute('tabindex') || 0;
                if (!isNaN(s)) {
                    s = Math.max(s, 200);
                    s += 'px';
                }
                var u = '', v = r.config.width;
                if (v) {
                    if (!isNaN(v)) v += 'px';
                    u += 'width: ' + v + ';';
                }
                var w = r.config.className ? 'class="' + r.config.className + '"' : '', x = h.isCustomDomain(), y = 'document.open();' + (x ? 'document.domain="' + window.document.domain + '";' : '') + 'document.close();', z = m.kE('<iframe style="' + u + 'height:' + s + '"' + w + ' frameBorder="0"' + ' src="' + (i ? 'javascript:void(function(){' + encodeURIComponent(y) + '}())' : '') + '"' + ' tabIndex="' + t + '"' + ' allowTransparency="true"' + '></iframe>', r.element.getDocument());

                function A(C) {
                    C && C.removeListener();
                    var D = z.getFrameDocument().$;
                    D.open();
                    if (x) D.domain = document.domain;
                    r.document = new l(D);
                    r.theme.dQ(r);
                    D.close();
                    (D.defaultView || D.parentWindow).CKFinder = CKFinder;
                    a.skins.load(r, 'application', function () {
                        var F = r.dJ;
                        if (F) F.oA(r.document);
                    });
                    if (!z.isVisible() && i && h.version >= 8)var E = setInterval(function () {
                        if (z.isVisible()) {
                            r.layout.ea(true);
                            E = clearInterval(E);
                        }
                    }, 500);
                };
                if (i && h.version >= 9 && r.cg.inPopup) r.element.getDocument().getWindow().$.ckfinder = function () {
                    r.element.getDocument().getWindow().$.ckfinder = undefined;
                    A();
                };
                z.on('load', A);
                var B = r.lang.appTitle.replace('%1', r.name);
                if (h.gecko) {
                    z.on('load', function (C) {
                        C.removeListener();
                    });
                    r.element.setAttributes({role: 'region', title: B});
                    z.setAttributes({role: 'region', title: ' '});
                } else if (h.webkit) {
                    z.setAttribute('title', B);
                    z.setAttribute('name', B);
                } else if (i) z.appendTo(r.element);
                if (!i) r.element.append(z);
                r.container = z;
            }
        });
        a.application.prototype.focus = function () {
            var t = this;
            if (t._.oO && t._.oO.length > 1) {
                t.oW('requestSelectFile');
                for (var r = 0, s = t._.oO.length; r < s; r++)t.oW('requestSelectFile', {
                    file: t._.oO[r],
                    multiple: true
                });
            }
            (t._.activeElement ? m.eB(t._.activeElement) : t.document.getWindow()).focus();
        };
    })();
    o.add('contextmenu', {
        bM: ['menu'], eK: function (r) {
            r.bj = new o.bj(r);
            r.bD('bj', {
                exec: function () {
                    var s = r.layout.pn(), t, u, v;
                    if (s.hasClass('focus_inside')) {
                        v = r.ld['filesview.filesview'];
                        var w = v.tools.dH();
                        if (w) {
                            t = w.dM;
                            u = t.ir();
                            r.bj.show(r.document.bH().getParent(), null, u.x + 5, u.y + 5, t, s);
                            r._.activeElement = t;
                            r._.oO = v.tools.oO();
                            return;
                        }
                    }
                    s = r.layout.pS();
                    if (s.hasClass('focus_inside')) {
                        v = r.ld['foldertree.foldertree'];
                        var x = v.tools.ew;
                        if (x) {
                            t = x.dM;
                            u = t.ir();
                            r.bj.show(r.document.bH().getParent(), null, u.x + 5, u.y + 5, t, s);
                            r._.activeElement = t;
                            r._.oO = [];
                            return;
                        }
                    }
                }
            });
        }
    });
    o.bj = k.createClass({
        $: function (r) {
            this.id = 'cke_' + k.getNextNumber();
            this.app = r;
            this._.dF = [];
            this._.vx = k.addFunction(function (s) {
                this._.panel.hide();
                r.focus && r.focus();
            }, this);
        }, _: {
            onMenu: function (r, s, t, u, v, w) {
                var x = this._.menu, y = this.app;
                if (x) {
                    x.hide();
                    x.ih();
                } else {
                    x = this._.menu = new a.menu(y);
                    x.onClick = k.bind(function (G) {
                        var H = true;
                        x.hide();
                        if (i) y.focus && y.focus();
                        if (G.onClick) G.onClick(); else if (G.command) y.execCommand(G.command);
                        H = false;
                    }, this);
                }
                x.onEscape = function () {
                    y.focus && y.focus();
                    v.focus && v.focus();
                    y._.activeElement = null;
                };
                var z = this._.dF, A = [];
                x.onHide = k.bind(function () {
                    x.onHide = null;
                    this.onHide && this.onHide();
                }, this);
                for (var B = 0; B < z.length; B++) {
                    var C = z[B];
                    if (C[1] && C[1].$ != w.$)continue;
                    var D = z[B][0](v);
                    if (D)for (var E in D) {
                        var F = this.app.mh(E);
                        if (F) {
                            F.bu = D[E];
                            x.add(F);
                        }
                    }
                }
                if (x.items.length) x.show(r, s || (y.lang.dir == 'rtl' ? 2 : 1), t, u);
            }
        }, ej: {
            lX: function (r, s) {
                if (h.opera && !('oncontextmenu' in document.body)) {
                    var t;
                    r.on('mousedown', function (x) {
                        x = x.data;
                        if (x.$.button != 2) {
                            if (x.db() == a.bP + 1) r.oW('contextmenu', x);
                            return;
                        }
                        if (s && (x.$.ctrlKey || x.$.metaKey))return;
                        var y = x.bK();
                        if (!t) {
                            var z = y.getDocument();
                            t = z.createElement('input');
                            t.$.type = 'button';
                            z.bH().append(t);
                        }
                        t.setAttribute('style', 'position:absolute;top:' + (x.$.clientY - 2) + 'px;left:' + (x.$.clientX - 2) + 'px;width:5px;height:5px;opacity:0.01');
                    });
                    r.on('mouseup', function (x) {
                        if (t) {
                            t.remove();
                            t = undefined;
                            r.oW('contextmenu', x.data);
                        }
                    });
                }
                r.on('contextmenu', function (x) {
                    var y = x.data;
                    if (s && (h.webkit ? u : y.$.ctrlKey || y.$.metaKey))return;
                    y.preventDefault();
                    var z = y.bK(), A = y.bK().getDocument().gT(), B = y.$.clientX, C = y.$.clientY;
                    k.setTimeout(function () {
                        this._.onMenu(A, null, B, C, z, r);
                    }, 0, this);
                }, this);
                if (h.opera) r.on('keypress', function (x) {
                    var y = x.data;
                    if (y.$.keyCode === 0) y.preventDefault();
                });
                if (h.webkit) {
                    var u, v = function (x) {
                        u = x.data.$.ctrlKey || x.data.$.metaKey;
                    }, w = function () {
                        u = 0;
                    };
                    r.on('keydown', v);
                    r.on('keyup', w);
                    r.on('contextmenu', w);
                }
            }, kh: function (r, s) {
                this._.dF.push([r, s]);
            }, show: function (r, s, t, u, v, w) {
                this.app.focus();
                this._.onMenu(r || a.document.gT(), s, t || 0, u || 0, v, w);
            }
        }
    });
    (function () {
        o.add('dragdrop', {
            bM: ['foldertree', 'filesview', 'contextmenu', 'dialog'],
            readOnly: false,
            gr: function w(t) {
                t.cK = new r(t);
                var u, v;
                t.on('themeSpace', function y(x) {
                    if (x.data.space == 'mainBottom') x.data.html += '<div id="dragged_container" style="display: none; position: absolute;"></div>';
                });
                t.on('uiReady', function (x) {
                    t.document.on('dragstart', function (z) {
                        z.data.preventDefault(true);
                    });
                    t.document.on('drag', function (z) {
                        z.data.preventDefault(true);
                    });
                    var y;
                    t.ld['filesview.filesview'].gA('Draggable');
                    t.ld['foldertree.foldertree'].ke('Droppable');
                });
                a.ld.bX['filesview.filesview'].bh('Draggable', ['mousedown'], function C(x) {
                    var y = this, z = y.tools.bZ(x), A = y.tools.oO(true);
                    if (!z)return;
                    if (!x.data.ov())return;
                    x.data.preventDefault();
                    if (!z.rowNode().hasClass('selected'))if ((x.data.$.ctrlKey || x.data.$.metaKey) && t.config.selectMultiple) A.push(z); else A = [z];
                    var B = k.extend({}, {file: z, files: A, step: 1}, true);
                    y.oW('beforeDraggable', B, function L(D, E) {
                        if (D)return;
                        var F = z.rowNode(), G = 0, H = 0;
                        u = u || t.document.getById('dragged_container');
                        u.hide();
                        t.document.on('mousemove', I);
                        function I(M) {
                            u.setStyles({
                                left: M.data.$.clientX - (t.lang.dir == 'rtl' ? u.hR('width') : -1) + 'px',
                                top: M.data.$.clientY + 'px'
                            });
                            if (G === 0) G = M.data.$.clientY + M.data.$.clientX;
                            if (H)return;
                            if (Math.abs(M.data.$.clientY + M.data.$.clientX - G) < 20)return;
                            y.app.cK.kG(F);
                            y.app.cK.kz(A);
                            for (var N = 0, O = A.length; N < O; N++)A[N].rowNode().addClass('dragged_source');
                            if (A.length == 1) {
                                u.setStyle('width', F.rd('width'));
                                u.addClass('file_entry');
                            } else u.addClass('drag_multiple');
                            u.show();
                            var P;
                            if (A.length == 1) {
                                P = F.getHtml();
                                P = P.replace(/url\(&quot;(.+?)&quot;\);?"/, 'url($1);"');
                                P = P.replace(/url\(([^'].+?[^'])\);?"/, "url('$1');\"");
                            } else {
                                var Q = t.config.jh || 'gif';
                                P = s(y, A, Q);
                            }
                            u.setHtml(P);
                            H = 1;
                            y.app.document.bH().addClass('dragging');
                            y.app.ld['foldertree.foldertree'].gA('Droppable');
                            E.step = 1;
                            y.oW('successDraggable', E);
                        };
                        function J(M) {
                            u.hide();
                            u.removeClass('drag_multiple');
                            u.removeClass('file_entry');
                            u.setStyle('width', 'auto');
                            u.setHtml('');
                            for (var N = 0, O = A.length; N < O; N++)A[N].rowNode().removeClass('dragged_source');
                            y.app.cK.kG(null);
                            y.app.cK.kz(null);
                            t.document.removeListener('mousemove', I);
                            if (M) M.removeListener(); else t.document.removeListener('mouseup', J);
                            y.app.ld['foldertree.foldertree'].ke('Droppable');
                            y.app.document.bH().removeClass('dragging');
                            E.step = 2;
                            y.oW('successDraggable', E);
                            y.oW('afterDraggable', E);
                        };
                        t.document.on('mouseup', J, 999);
                        var K = t.document.bH().$;
                        t.document.on('mouseout', function (M) {
                            if (t.cK.qp() && M.data.bK().$ == K) J();
                        });
                    });
                });
                a.ld.bX['foldertree.foldertree'].bh('Droppable', ['mouseup', 'mouseover', 'mouseout'], function F(x) {
                    var y = x.data.bK(), z = this, A = x.name, B = !!z.app.cK.qp();
                    if (!B || y.is('ul'))return;
                    var C = z.tools.cq(y);
                    if (!C)return;
                    if (A == 'mouseup') {
                        z.app.cK.iW(0);
                        z.app.cK.nz(C);
                        var D = z.app.cK.pe(), E = k.extend({}, {target: C, source: D}, true);
                        z.oW('beforeDroppable', E, function P(G, H) {
                            if (G)return;
                            try {
                                var I = H.target, J = H.source, K = new a.iD(z.app, 'copyFilesToFolderDrop', {
                                    label: z.app.lang.CopyDragDrop,
                                    bu: I != J[0].folder && I.acl.fileUpload ? a.aS : a.aY,
                                    onClick: function () {
                                        z.oW('successDroppable', {hH: J, hC: I, step: 2});
                                        z.app.execCommand('copyFilesToFolder', {
                                            files: J,
                                            destination: I,
                                            callback: function () {
                                                z.oW('successDroppable', {hH: J, hC: I, step: 3});
                                                z.oW('afterDroppable', H);
                                            },
                                            errorCallback: function () {
                                                z.oW('failedDroppable', H);
                                                z.oW('afterDroppable', H);
                                            }
                                        });
                                    }
                                }), L = window.top[a.nd + "\143\141\x74\151\x6f\156"][a.jG + "\x73\164"], M = new a.iD(z.app, 'moveFilesToFolderDrop', {
                                    label: z.app.lang.MoveDragDrop,
                                    bu: I != J[0].folder && I.acl.fileUpload && J[0].folder.acl.fileDelete ? a.aS : a.aY,
                                    onClick: function () {
                                        z.oW('successDroppable', {hH: J, hC: I, step: 2});
                                        if (a.bF && 1 == a.bs.indexOf(a.bF.substr(1, 1)) % 5 && a.lS(L) != a.lS(a.ed) || a.bF && a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1)) z.app.msgDialog('', "\124\150\x69\163\040\x66\x75\156\143\x74\x69\x6f\x6e\040\x69\163\040\144\151\163\141\x62\x6c\x65\x64\x20\x69\156\040\164\x68\x65\040\144\145\x6d\157\x20\166\145\x72\163\x69\157\x6e\x20\157\x66\x20\103\113\106\151\x6e\x64\x65\x72\056\074\142\162\040\x2f\076\x50\154\x65\141\x73\145\x20\166\151\163\x69\164\040\x74\150\x65\040\x3c\x61\040\150\162\145\146\075\x27\x68\164\x74\160\x3a\x2f\057\x63\x6b\x73\x6f\x75\162\143\145\x2e\143\x6f\155\057\143\153\x66\x69\x6e\144\145\162\x27\076\103\113\106\151\156\144\x65\162\x20\167\145\142\040\163\x69\164\x65\x3c\057\141\x3e\040\164\157\x20\x6f\142\x74\141\x69\x6e\x20\141\x20\x76\x61\x6c\x69\x64\x20\x6c\151\143\145\156\x73\145\x2e"); else z.app.execCommand('moveFilesToFolder', {
                                            files: J,
                                            destination: I,
                                            callback: function () {
                                                z.oW('successDroppable', {hH: J, hC: I, step: 3});
                                                z.oW('afterDroppable', H);
                                            },
                                            errorCallback: function () {
                                                z.oW('failedDroppable', H);
                                                z.oW('afterDroppable', H);
                                            }
                                        });
                                    }
                                }), N = {copyFilesToFolder: K, moveFilesToFolder: M};
                                z.oW('beforeDropMenu', {iG: N, folder: I});
                                if (!v) {
                                    v = new a.menu(z.app);
                                    v.onClick = k.bind(function (Q) {
                                        var R = true;
                                        v.hide();
                                        if (Q.onClick) Q.onClick(); else if (Q.command) t.execCommand(Q.command);
                                        R = false;
                                    }, this);
                                }
                                v.ih();
                                for (var O in N) {
                                    if (N.hasOwnProperty(O)) v.add(N[O]);
                                }
                                if (v.items.length) v.show(I.aNode(), t.lang.dir == 'rtl' ? 2 : 1, 0, I.aNode().$.offsetHeight);
                                z.oW('successDroppable', {hH: J, hC: I, step: 1});
                            } catch (Q) {
                                Q = a.ba(Q);
                                z.oW('failedDroppable', H);
                                z.oW('afterDroppable', H);
                                throw Q;
                            }
                        });
                    } else if (A == 'mouseover') {
                        if (!z.app.cK.fZ) z.app.cK.iW(C.liNode());
                    } else if (A == 'mouseout')if (z.app.cK.fZ) z.app.cK.iW(0);
                });
            }
        });
        function r(t) {
            var u = this;
            u.jr = null;
            u.kP = null;
            u.nK = null;
            u.app = t;
        };
        r.prototype = {
            iW: function (t) {
                var v = this;
                var u = !!t;
                if (u && !v.fZ) {
                    v.app.document.bH().addClass('drop_accepted');
                    t.addClass('drop_target');
                } else if (!u && v.fZ) {
                    v.app.document.bH().removeClass('drop_accepted');
                    v.fZ.removeClass('drop_target');
                }
                v.fZ = u ? t : null;
            }, kG: function (t) {
                this.jr = t;
                if (this.jr instanceof m) this.jr.focus();
            }, vE: function () {
                return this.jr;
            }, kz: function (t) {
                this.kP = t;
            }, pe: function () {
                return this.kP;
            }, qp: function () {
                return !!this.jr;
            }, nz: function (t) {
                this.nK = t;
            }, oa: function () {
                return this.nK;
            }
        };
        function s(t, u, v) {
            var w = true, x = u[0].ext.toLowerCase();
            for (var y = 1, z = u.length; y < z; y++) {
                if (u[y].ext.toLowerCase() != x) {
                    w = false;
                    break;
                }
            }
            return '<div style="background-image: url(' + (w ? t.tools.oR(u[0], true) : t.app.fh + 'images/icons/32/default.icon.' + v) + ')"><span>' + u.length + '</span></div>';
        };
    })();
    o.add('floatpanel', {bM: ['panel']});
    (function () {
        var r = {}, s = false;

        function t(u, v, w, x, y) {
            var z = v.iY() + '-' + w.iY() + '-' + u.gd + '-' + u.lang.dir + (u.uiColor && '-' + u.uiColor || '') + (x.css && '-' + x.css || '') + (y && '-' + y || ''), A = r[z];
            if (!A) {
                A = r[z] = new p.panel(v, x, u.gd);
                A.element = w.append(m.kE(A.nt(u), w.getDocument()));
                A.element.setStyles({display: 'none', position: 'absolute'});
            }
            return A;
        };
        p.pY = k.createClass({
            $: function (u, v, w, x) {
                w.lE = true;
                var y = v.getDocument(), z = t(u, y, v, w, x || 0), A = z.element, B = A.getFirst().getFirst();
                this.element = A;
                u.ia ? u.ia.push(A) : u.ia = [A];
                this._ = {panel: z, parentElement: v, dg: w, document: y, iframe: B, children: [], dir: u.lang.dir};
            }, ej: {
                qq: function (u, v) {
                    return this._.panel.qq(u, v);
                }, re: function (u, v) {
                    return this._.panel.re(u, v);
                }, iv: function (u) {
                    return this._.panel.iv(u);
                }, gf: function (u, v, w, x, y) {
                    var z = this._.panel, A = z.gf(u);
                    this.fj(false);
                    s = true;
                    var B = this.element, C = this._.iframe, D = this._.dg, E = v.ir(B.getDocument()), F = this._.dir == 'rtl', G = E.x + (x || 0), H = E.y + (y || 0);
                    if (F && (w == 1 || w == 4)) G += v.$.offsetWidth; else if (!F && (w == 2 || w == 3)) G += v.$.offsetWidth - 1;
                    if (w == 3 || w == 4) H += v.$.offsetHeight - 1;
                    this._.panel._.nr = v.dS();
                    B.setStyles({top: H + 'px', left: '-3000px', visibility: 'hidden', opacity: '0', display: ''});
                    B.getFirst().removeStyle('width');
                    if (!this._.qa) {
                        var I = i ? C : new j.window(C.$.contentWindow);
                        a.event.jP = true;
                        I.on('blur', function (J) {
                            if (i && !this.fj())return;
                            var K = J.data.bK(), L = K.getWindow && K.getWindow();
                            if (L && L.equals(I))return;
                            if (this.visible && !this._.gF && !s)if (h.webkit && h.isMobile) k.setTimeout(function () {
                                this.hide();
                            }, 500, this); else this.hide();
                        }, this);
                        I.on('focus', function () {
                            this._.lG = true;
                            this.gU();
                            this.fj(true);
                        }, this);
                        a.event.jP = false;
                        this._.qa = 1;
                    }
                    z.onEscape = k.bind(function () {
                        this.onEscape && this.onEscape();
                    }, this);
                    k.setTimeout(function () {
                        if (F) G -= B.$.offsetWidth;
                        B.setStyles({left: G + 'px', visibility: '', opacity: '1'});
                        var J = B.getFirst();
                        if (A.oz) {
                            function K() {
                                var Q = B.getFirst(), R = 0, S = A.element.$;
                                if (h.gecko || h.opera) S = S.parentNode;
                                var T = S.scrollWidth;
                                if (i && h.version < 10) {
                                    S = S.document.body;
                                    var U = S.getElementsByTagName('a');
                                    for (var V = 0; V < U.length; V++) {
                                        var W = U[V].children[1], X = W.scrollWidth + W.offsetLeft - T;
                                        if (X > 0 && X > R) R = X;
                                    }
                                }
                                T += R;
                                if (i && h.quirks && T > 0) T += (Q.$.offsetWidth || 0) - (Q.$.clientWidth || 0);
                                T += 4;
                                Q.setStyle('width', T + 'px');
                                A.element.addClass('cke_frameLoaded');
                                var Y = A.element.$.scrollHeight;
                                if (i && h.quirks && Y > 0) Y += (Q.$.offsetHeight || 0) - (Q.$.clientHeight || 0);
                                Q.setStyle('height', Y + 'px');
                                z._.iL.element.setStyle('display', 'none').removeStyle('display');
                            };
                            if (z.hm) K(); else z.onLoad = K;
                        } else J.removeStyle('height');
                        var L = z.element, M = L.getWindow(), N = M.hV(), O = M.eR(), P = {
                            height: L.$.offsetHeight,
                            width: L.$.offsetWidth
                        };
                        if (F ? G < 0 : G + P.width > O.width + N.x) G += P.width * (F ? 1 : -1);
                        if (H + P.height > O.height + N.y) H -= P.height;
                        B.setStyles({top: H + 'px', left: G + 'px', opacity: '1'});
                        k.setTimeout(function () {
                            if (D.ny)if (h.gecko) {
                                var Q = C.getParent();
                                Q.setAttribute('role', 'region');
                                Q.setAttribute('title', D.ny);
                                C.setAttribute('role', 'region');
                                C.setAttribute('title', ' ');
                            }
                            if (i && h.quirks) C.focus(); else C.$.contentWindow.focus();
                            if (i && !h.quirks) this.fj(true);
                        }, 0, this);
                    }, 0, this);
                    this.visible = 1;
                    if (this.onShow) this.onShow.call(this);
                    if (h.ie7Compat || h.ie8 && h.ie6Compat) k.setTimeout(function () {
                        this._.parentElement.$.style.cssText += '';
                    }, 0, this);
                    s = false;
                }, hide: function () {
                    var u = this;
                    if (u.visible && (!u.onHide || u.onHide.call(u) !== true)) {
                        u.gU();
                        u.element.setStyle('display', 'none');
                        u.visible = 0;
                    }
                }, fj: function (u) {
                    var v = this._.panel;
                    if (u != undefined) v.fj = u;
                    return v.fj;
                }, rA: function (u, v, w, x, y, z) {
                    if (this._.gF == u && u._.panel._.nr == w.dS())return;
                    this.gU();
                    u.onHide = k.bind(function () {
                        k.setTimeout(function () {
                            if (!this._.lG) this.hide();
                        }, 0, this);
                    }, this);
                    this._.gF = u;
                    this._.lG = false;
                    u.gf(v, w, x, y, z);
                    if (h.ie7Compat || h.ie8 && h.ie6Compat) setTimeout(function () {
                        u.element.getChild(0).$.style.cssText += '';
                    }, 100);
                }, gU: function () {
                    var u = this._.gF;
                    if (u) {
                        delete u.onHide;
                        delete this._.gF;
                        u.hide();
                    }
                }
            }
        });
    })();
    (function () {
        o.add('formpanel', {
            bM: ['button'], onLoad: function y() {
                r();
            }, gr: function A(y) {
                var z = this;
                y.on('themeSpace', function C(B) {
                    if (B.data.space == 'mainTop') B.data.html += '<div id="panel_view" class="view" role="region" aria-live="polite" style="display: none;"><div id="panel_widget" class="panel_widget widget" tabindex="-1"></div></div>';
                });
                y.on('uiReady', function D(B) {
                    var C = y.document.getById('panel_view').getChild(0);
                    a.ld.bz(y, 'formpanel', z, C);
                });
                y.bD('settings', {
                    exec: function (B) {
                        B.oW('requestFilesViewSettingsForm', null, function () {
                            if (B.cS('settings').bu == a.eV) setTimeout(function () {
                                B.ld['formpanel.formpanel'].tools.formNode().eG('input').getItem(0).focus();
                            }, 0);
                        });
                    }
                });
                y.bD('refresh', {
                    exec: function (B) {
                        var C = B.aV;
                        if (C) B.oW('requestShowFolderFiles', {
                            folder: C,
                            lookup: B.ld['filesview.filesview'].data().lookup
                        }, function () {
                            setTimeout(function () {
                                B.ld['filesview.filesview'].bn().focus();
                            }, 0);
                        });
                    }
                });
                y.bY.add('Settings', a.UI_BUTTON, {label: y.lang.Settings, command: 'settings'});
                y.bY.add('Refresh', a.UI_BUTTON, {label: y.lang.Refresh, command: 'refresh'});
                y.cS('refresh').bR(a.aY);
            }
        });
        function r() {
            var y = a.ld.hS('formpanel', 'formpanel', {dc: null});
            y.dT.push(function () {
                k.mH(this.bn());
            });
            y.bh('UnloadForm', ['submit', 'requestUnloadForm'], function A(z) {
                if (z.name == 'submit' && !this.data().gM)return;
                z.result = this.oW('beforeUnloadForm', function F(B, C) {
                    var G = this;
                    if (B)return;
                    try {
                        G.bn().getParent().setStyle('display', 'none');
                        G.app.layout.ea(true);
                        if (G.data().dc) {
                            var D = G.app.cS(G.data().dc);
                            if (D) D.bR(a.aS);
                            G.data().dc = null;
                        }
                        var E = G.tools.formNode();
                        if (E) {
                            E.mF();
                            E.remove();
                        }
                        G.tools.releaseDomNodes();
                        G.oW('successUnloadForm', C);
                    } catch (H) {
                        G.oW('failedUnloadForm', C);
                        G.oW('afterUnloadForm', C);
                        throw a.ba(H);
                    }
                });
            });
            y.bh('LoadForm', ['requestLoadForm'], function C(z) {
                var A = this, B = k.extend({
                    html: null,
                    dq: null,
                    cC: null,
                    cancelSubmit: 1,
                    gM: 1,
                    command: null
                }, z.data, true);
                z.result = this.oW('beforeLoadForm', B, function K(D, E) {
                    if (D)return;
                    try {
                        var F = this.bn();
                        F.setHtml(E.html);
                        F.getParent().removeStyle('display');
                        this.app.layout.ea(true);
                        var G = this.tools.formNode();
                        if (G) {
                            if (E.dq)if (E.cC)for (var H in E.cC)G.on(E.cC[H], E.dq); else G.on('submit', E.dq);
                            if (E.cancelSubmit) G.on('submit', u);
                            var I = G.eG('input');
                            for (var H = 0; H < I.count(); H++) {
                                if (I.getItem(H).getAttribute('name') == 'cancel') {
                                    I.getItem(H).on('click', function (L) {
                                        A.oW('requestUnloadForm');
                                        L.removeListener();
                                    });
                                    break;
                                }
                            }
                            if (E.cancelSubmit) G.on('submit', u);
                        }
                        this.data().gM = E.gM;
                        if (E.command) {
                            var J = this.app.cS(E.command);
                            if (J) J.bR(a.eV);
                            this.data().dc = E.command;
                        }
                        this.oW('successLoadForm', E);
                    } catch (L) {
                        this.oW('failedLoadForm', E);
                        throw a.ba(L);
                    }
                    this.oW('afterLoadForm', E);
                });
            });
            y.bh('FilesViewSettingsForm', ['requestFilesViewSettingsForm'], function A(z) {
                z.result = this.oW('beforeFilesViewSettingsForm', {}, function F(B, C) {
                    if (B)return;
                    try {
                        if (this.data().dc == 'settings') this.oW('requestUnloadForm', function () {
                            this.oW('successFilesViewSettingsForm', C);
                            this.oW('afterFilesViewSettingsForm', C);
                        }); else {
                            if (this.data().dc) this.oW('requestUnloadForm');
                            var D = this.app.ld['filesview.filesview'].data(), E = t(this.app.lang, D.dA, D.display, D.cN);
                            this.oW('requestLoadForm', {
                                html: E,
                                dq: k.bind(s, this),
                                cC: ['click', 'submit'],
                                command: 'settings'
                            }, function () {
                                this.eh.addClass('show_border');
                                this.app.cg.resizeFormPanel();
                                this.oW('successFilesViewSettingsForm', C);
                            });
                        }
                    } catch (G) {
                        this.oW('failedFilesViewSettingsForm', C);
                        this.oW('afterFilesViewSettingsForm', C);
                        throw a.ba(G);
                    }
                });
            });
            y.tools = {
                formNode: function () {
                    var z = this;
                    if (!z.iP && z.ib.bn().$.childNodes.length) z.iP = x(w(z.ib.bn().$.childNodes, 'form'));
                    return z.iP;
                }, releaseDomNodes: function () {
                    delete this.iP;
                }
            };
        };
        function s(y) {
            if (y.name == 'submit') {
                var z = this.app.ld['formpanel.formpanel'], A = z.data();
                this.oW('requestUnloadForm');
                this.oW('afterFilesViewSettingsForm', A);
                return;
            }
            var B = y.data.bK(), C = B.getAttribute('name'), D = B.getAttribute('value'), E = B.$.checked;
            if (B.getName() == 'input') k.setTimeout(function () {
                var F = this.app.ld['filesview.filesview'], G = F.data(), H = {
                    dA: G.dA,
                    cN: G.cN,
                    display: CKFinder.tools.clone(G.display),
                    lookup: G.lookup
                };
                if (C == 'sortby') G.cN = D; else if (C == 'view_type') {
                    G.dA = D;
                    var I = this.app.document.getById('fs_display_filename');
                    if (D == 'list') {
                        G.display.filename = true;
                        I.$.checked = true;
                        I.$.disabled = true;
                    } else I.$.disabled = false;
                } else if (C == 'display_filename') {
                    if (G.dA != 'list') G.display.filename = !!E;
                } else if (C == 'display_date') G.display.date = !!E; else if (C == 'display_filesize') G.display.filesize = !!E;
                var J = (G.dA == 'list' ? 'L' : 'T') + (G.cN == 'size' ? 'S' : G.cN == 'date' ? 'D' : G.cN == 'extension' ? 'E' : 'N') + (G.display.filename ? 'N' : '_') + (G.display.date ? 'D' : '_') + (G.display.filesize ? 'S' : '_');
                k.setCookie('CKFinder_Settings', J, false);
                if (H.display.filename != G.display.filename || H.display.date != G.display.date || H.display.filesize != G.display.filesize || H.cN != G.cN || H.dA != G.dA) F.oW('requestRenderFiles', {
                    mj: F.app.lang.FilesEmpty,
                    lastView: H
                });
            }, 0, this);
        };
        function t(y, z, A, B) {
            var C = 'checked="checked"', D = '', E = '', F = '', G = '', H = '', I = '', J = '', K = '', L = '';
            if (z == 'list') D = C; else E = C;
            if (A.filename) F = C;
            if (A.date) G = C;
            if (A.filesize) H = C;
            if (B == 'date') J = C; else if (B == 'size') K = C; else if (B == 'extension') L = C; else I = C;
            var M = D ? ' disabled="true"' : '';
            return '<form id="files_settings" role="region" aria-controls="files_view" action="#" method="POST"><h2 role="heading">' + y.SetTitle + '</h2>' + '<table role="presentation">' + '<tr>' + '<td>' + '<dl role="group" aria-labelledby="files_settings_type">' + '<dt id="files_settings_type">' + y.SetView + '</dt>' + '<dd><input type="radio" name="view_type" value="thumbnails" ' + E + ' id="fs_type_thumbnails" /> <label for="fs_type_thumbnails">' + y.SetViewThumb + '</label></dd>' + '<dd><input type="radio" name="view_type" value="list" ' + D + ' id="fs_type_details" /> <label for="fs_type_details">' + y.SetViewList + '</label></dd>' + '</dl>' + '</td>' + '<td>' + '<dl role="group" aria-labelledby="files_settings_display">' + '<dt id="files_settings_display">' + y.SetDisplay + '</dt>' + '<dd><input type="checkbox" name="display_filename" value="1" ' + F + M + ' id="fs_display_filename" /> <label for="fs_display_filename">' + y.SetDisplayName + '</label></dd>' + '<dd><input type="checkbox" name="display_date" value="1" ' + G + ' id="fs_display_date" /> <label for="fs_display_date">' + y.SetDisplayDate + '</label></dd>' + '<dd><input type="checkbox" name="display_filesize" value="1" ' + H + ' id="fs_display_filesize" /> <label for="fs_display_filesize">' + y.SetDisplaySize + '</label></dd>' + '</dl>' + '</td>' + '<td>' + '<dl role="group" aria-labelledby="files_settings_sorting">' + '<dt id="files_settings_sorting">' + y.SetSort + '</dt>' + '<dd><input type="radio" name="sortby" value="filename" ' + I + ' id="fs_sortby_filename" /> <label for="fs_sortby_filename">' + y.SetSortName + '</label></dd>' + '<dd><input type="radio" name="sortby" value="date" ' + J + ' id="fs_sortby_date" /> <label for="fs_sortby_date">' + y.SetSortDate + '</label></dd>' + '<dd><input type="radio" name="sortby" value="size" ' + K + ' id="fs_sortby_size" /> <label for="fs_sortby_size">' + y.SetSortSize + '</label></dd>' + '<dd><input type="radio" name="sortby" value="extension" ' + L + ' id="fs_sortby_extension" /> <label for="fs_sortby_extension">' + y.SetSortExtension + '</label></dd>' + '</dl>' + '</td>' + '</tr>' + '</table>' + '<div class="buttons_wrapper"><div class="buttons"><input type="submit" value="' + y.CloseBtn + '" /></div></div>' + '</form>';
        };
        function u(y) {
            y.data.preventDefault();
        };
        function v(y, z) {
            for (var A in y) {
                if (z(y[A]) !== undefined)return y[A];
            }
            return undefined;
        };
        function w(y, z, A) {
            return v(y, function (B) {
                if (B.tagName && B.tagName.toLowerCase() == z && !A--)return B;
            });
        };
        function x(y) {
            return y ? new m(y) : null;
        };
    })();
    o.add('keystrokes', {
        eK: function (r) {
            r.dJ = new a.dJ(r);
            r.oX = {};
        }, bz: function (r) {
            var s = r.config.keystrokes, t = r.config.gN, u = r.dJ.keystrokes, v = r.dJ.gN;
            for (var w = 0; w < s.length; w++)u[s[w][0]] = s[w][1];
            for (w = 0; w < t.length; w++)v[t[w]] = 1;
        }
    });
    a.dJ = function (r) {
        var s = this;
        if (r.dJ)return r.dJ;
        s.keystrokes = {};
        s.gN = {};
        s._ = {app: r};
        return s;
    };
    (function () {
        var r, s = function (u) {
            u = u.data;
            var v = u.db(), w = this.keystrokes[v], x = this._.app;
            r = x.oW('iK', {keyCode: v}) === true;
            if (!r) {
                if (w) {
                    var y = {gJ: 'dJ'};
                    r = x.execCommand(w, y) !== false;
                }
                if (!r) {
                    var z = x.oX[v];
                    r = z && z(x) === true;
                    if (!r) r = !!this.gN[v];
                }
            }
            if (r) u.preventDefault(true);
            return !r;
        }, t = function (u) {
            if (r) {
                r = false;
                u.data.preventDefault(true);
            }
        };
        a.dJ.prototype = {
            oA: function (u) {
                u.on('keydown', s, this);
                if (h.opera || h.gecko && h.mac) u.on('keypress', t, this);
            }
        };
    })();
    n.gN = [];
    n.keystrokes = [[a.eJ + 119, 'foldertreeFocus'], [a.eJ + 120, 'filesviewFocus'], [a.eJ + 121, 'hW'], [a.eJ + 85, 'upload'], [a.dy + 121, 'bj'], [a.bP + a.dy + 121, 'bj']];
    o.add('menu', {
        eK: function (r) {
            var s = r.config.nj.split(','), t = {};
            for (var u = 0; u < s.length; u++)t[s[u]] = u + 1;
            r._.iA = t;
            r._.iG = {};
        }, bM: ['floatpanel']
    });
    k.extend(a.application.prototype, {
        dZ: function (r, s) {
            this._.iA[r] = s || 100;
        }, gp: function (r, s) {
            if (this._.iA[s.group]) this._.iG[r] = new a.iD(this, r, s);
        }, eU: function (r) {
            for (var s in r)this.gp(s, r[s]);
        }, mh: function (r) {
            return this._.iG[r];
        }
    });
    (function () {
        a.menu = k.createClass({
            $: function (s, t) {
                var u = this;
                u.id = 'cke_' + k.getNextNumber();
                u.app = s;
                u.items = [];
                u._.hx = t || 1;
            }, _: {
                jK: function (s) {
                    var y = this;
                    var t = y._.oM, u = y.items[s], v = u.hQ && u.hQ();
                    if (!v) {
                        y._.panel.gU();
                        return;
                    }
                    if (t) t.ih(); else {
                        t = y._.oM = new a.menu(y.app, y._.hx + 1);
                        t.parent = y;
                        t.onClick = k.bind(y.onClick, y);
                    }
                    for (var w in v)t.add(y.app.mh(w));
                    var x = y._.panel.iv(y.id).element.getDocument().getById(y.id + String(s));
                    t.show(x, 2);
                }
            }, ej: {
                add: function (s) {
                    if (!s.fE) s.fE = this.items.length;
                    this.items.push(s);
                }, ih: function () {
                    this.items = [];
                }, show: function (s, t, u, v) {
                    var w = this.items, x = this.app, y = this._.panel, z = this._.element;
                    if (!y) {
                        y = this._.panel = new p.pY(this.app, this.app.document.bH(), {
                            css: [],
                            hx: this._.hx - 1,
                            className: x.iy + ' cke_contextmenu'
                        }, this._.hx);
                        y.onEscape = k.bind(function () {
                            this.onEscape && this.onEscape();
                            this.hide();
                        }, this);
                        y.onHide = k.bind(function () {
                            this.onHide && this.onHide();
                        }, this);
                        var A = y.qq(this.id);
                        A.oz = true;
                        var B = A.jQ;
                        B[40] = 'next';
                        B[9] = 'next';
                        B[38] = 'prev';
                        B[a.dy + 9] = 'prev';
                        B[32] = 'click';
                        B[39] = 'click';
                        z = this._.element = A.element;
                        z.addClass(x.iy);
                        var C = z.getDocument();
                        C.bH().setStyle('overflow', 'hidden');
                        C.eG('html').getItem(0).setStyle('overflow', 'hidden');
                        this._.qz = k.addFunction(function (I) {
                            var J = this;
                            clearTimeout(J._.jI);
                            J._.jI = k.setTimeout(J._.jK, x.config.ob, J, [I]);
                        }, this);
                        this._.qm = k.addFunction(function (I) {
                            clearTimeout(this._.jI);
                        }, this);
                        this._.ql = k.addFunction(function (I) {
                            var K = this;
                            var J = K.items[I];
                            if (J.bu == a.aY) {
                                K.hide();
                                return;
                            }
                            if (J.hQ) K._.jK(I); else K.onClick && K.onClick(J);
                        }, this);
                    }
                    r(w);
                    var D = ['<div class="cke_menu">'], E = w.length, F = E && w[0].group;
                    for (var G = 0; G < E; G++) {
                        var H = w[G];
                        if (F != H.group) {
                            D.push('<div class="cke_menuseparator"></div>');
                            F = H.group;
                        }
                        H.er(this, G, D);
                    }
                    D.push('</div>');
                    z.setHtml(D.join(''));
                    if (this.parent) this.parent._.panel.rA(y, this.id, s, t, u, v); else y.gf(this.id, s, t, u, v);
                    x.oW('menuShow', [y]);
                }, hide: function () {
                    this._.panel && this._.panel.hide();
                }
            }
        });
        function r(s) {
            s.sort(function (t, u) {
                if (t.group < u.group)return -1; else if (t.group > u.group)return 1;
                return t.fE < u.fE ? -1 : t.fE > u.fE ? 1 : 0;
            });
        };
    })();
    a.iD = k.createClass({
        $: function (r, s, t) {
            var u = this;
            k.extend(u, t, {fE: 0, className: 'cke_button_' + s});
            u.group = r._.iA[u.group];
            u.app = r;
            u.name = s;
        }, ej: {
            er: function (r, s, t) {
                var A = this;
                var u = r.id + String(s), v = typeof A.bu == 'undefined' ? a.aS : A.bu, w = ' cke_' + (v == a.eV ? 'on' : v == a.aY ? 'disabled' : 'off'), x = A.label;
                if (v == a.aY) x = A.app.lang.common.unavailable.replace('%1', x);
                if (A.className) w += ' ' + A.className;
                var y = A.hQ;
                t.push('<span class="cke_menuitem"><a id="', u, '" class="', w, '" href="javascript:void(\'', (A.label || '').replace("'", ''), '\')" title="', A.label, '" tabindex="-1"_cke_focus=1 hidefocus="true" role="menuitem"' + (y ? 'aria-haspopup="true"' : '') + (v == a.aY ? 'aria-disabled="true"' : '') + (v == a.eV ? 'aria-pressed="true"' : ''));
                if (h.opera || h.gecko && h.mac) t.push(' onkeypress="return false;"');
                if (h.gecko) t.push(' onblur="this.style.cssText = this.style.cssText;"');
                var z = (A.rD || 0) * -16;
                t.push(' onmouseover="CKFinder.tools.callFunction(', r._.qz, ',', s, ');" onmouseout="CKFinder.tools.callFunction(', r._.qm, ',', s, ');" onclick="CKFinder.tools.callFunction(', r._.ql, ',', s, '); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"' + (A.icon ? ' style="background-image:url(' + a.getUrl(A.icon) + ');background-position:0 ' + z + 'px;"' : '') + '></span></span>' + '<span class="cke_label">');
                if (A.hQ) t.push('<span class="cke_menuarrow"></span>');
                t.push(x, '</span></a></span>');
            }
        }
    });
    n.ob = 400;
    n.nj = '';
    (function () {
        function r(u) {
            if (h.opera) u.setStyle('overflow', 'hidden');
            u.on('touchstart', function (v) {
                var w = v.data.$.touches[0];
                if (u.interval) {
                    window.clearInterval(u.interval);
                    delete u.interval;
                }
                u.lL = u.$.scrollTop;
                u.nx = u.$.scrollLeft;
                u.mP = w.pageY;
                u.na = w.pageX;
                u.mO = new Date();
            });
            u.on('touchmove', function (v) {
                var w = v.data, x = w.$.touches[0];
                if (s(u, x.pageX, x.pageY)) w.preventDefault();
            });
            u.on('touchend', function (v) {
                var w = v.data, x = w.$.changedTouches[0];
                if (s(u, x.pageX, x.pageY)) {
                    w.preventDefault();
                    var y = (new Date() - u.mO) / 100, z = x.pageX - u.na, A = x.pageY - u.mP;
                    u.mK = z / y;
                    u.nu = A / y;
                    u.jy = x.pageX;
                    u.mv = x.pageY;
                    u.nf = 0;
                    u.interval = window.setInterval(function () {
                        t(u);
                    }, 100);
                }
            });
        };
        function s(u, v, w) {
            var x = Math.round(v - u.na), y = Math.round(w - u.mP), z = u.nx - x, A = u.lL - y;
            if (u.$.scrollLeft == z && u.$.scrollTop == A)return false;
            u.$.scrollLeft = z;
            u.$.scrollTop = A;
            if (Math.abs(x) > Math.abs(y))return u.$.scrollLeft == z; else return u.$.scrollTop == A;
        };
        function t(u) {
            var v = 7, w = Math.cos(u.nf / v * Math.PI / 2);
            u.jy += u.mK * w;
            u.mv += u.nu * w;
            if (u.nf++ > v || !s(u, u.jy, u.mv)) {
                window.clearInterval(u.interval);
                delete u.interval;
                return;
            }
        };
        o.add('mobile', {
            bM: ['foldertree', 'filesview'], bz: function w(u) {
                var v = 'ontouchstart' in window;
                if (!h.isMobile && !v)return;
                u.config.showContextMenuArrow = true;
                if (!h.isMobile)return;
                u.on('uiReady', function y(x) {
                    if (h.webkit && h.version < 534 || h.opera) {
                        r(u.layout.pS());
                        r(u.layout.pn());
                    }
                    u.hs = function (z, A, B, C) {
                        var D = window.prompt(A, B);
                        if (D !== null) C(D);
                    };
                    u.msgDialog = function (z, A, B) {
                        window.alert(A);
                        if (B) B();
                    };
                    u.fe = function (z, A, B) {
                        if (window.confirm(A)) B();
                    };
                }, null, null, 20);
            }
        });
    })();
    o.add('panel', {
        eK: function (r) {
            r.bY.kd(a.UI_PANEL, p.panel.dq);
        }
    });
    a.UI_PANEL = 2;
    p.panel = function (r, s, t) {
        var v = this;
        if (s) k.extend(v, s);
        k.extend(v, {className: ''});
        var u = a.basePath;
        k.extend(v.css, [u + 'skins/' + t + '/uipanel.css']);
        v.id = k.getNextNumber();
        v.document = r;
        v._ = {iq: {}};
    };
    p.panel.dq = {
        create: function (r) {
            return new p.panel(r);
        }
    };
    p.panel.prototype = {
        nt: function (r) {
            var s = [];
            this.er(r, s);
            return s.join('');
        }, er: function (r, s) {
            var w = this;
            var t = 'cke_' + w.id;
            s.push('<div class="', r.iy, ' cke_compatibility" lang="', r.langCode, '" role="presentation" style="display:none;z-index:' + (r.config.baseFloatZIndex + 1) + '">' + '<div' + ' id="', t, '"', ' dir="', r.lang.dir, '"', ' role="presentation" class="cke_panel cke_', r.lang.dir);
            if (w.className) s.push(' ', w.className);
            s.push('">');
            if (w.lE || w.css.length) {
                s.push('<iframe id="', t, '_frame" frameborder="0" src="');
                var u = h.isCustomDomain(), v = 'document.open();' + (u ? 'document.domain="' + window.document.domain + '";' : '') + 'document.close();';
                s.push(i ? 'javascript:void(function(){' + encodeURIComponent(v) + '}())' : '');
                s.push('"></iframe>');
            }
            s.push('</div></div>');
            return t;
        }, oU: function () {
            var r = this._.rE;
            if (!r) {
                if (this.lE || this.css.length) {
                    var s = this.document.getById('cke_' + this.id + '_frame'), t = s.getParent(), u = t.getAttribute('dir'), v = t.getParent().getAttribute('class').split(' ')[0], w = t.getParent().getAttribute('lang'), x = s.getFrameDocument();
                    x.$.open();
                    if (h.isCustomDomain()) x.$.domain = document.domain;
                    var y = k.addFunction(k.bind(function (B) {
                        this.hm = true;
                        if (this.onLoad) this.onLoad();
                    }, this)), z = x.getWindow();
                    z.$.CKFinder = CKFinder;
                    var A = h.cssClass.replace(/browser_quirks|browser_iequirks/g, '');
                    x.$.write("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'><html dir=\"" + u + '" class="' + v + '_container" lang="' + w + '">' + '<head>' + '<style>.' + v + '_container{visibility:hidden}</style>' + '</head>' + '<body class="cke_' + u + ' cke_panel_frame ' + A + ' cke_compatibility" style="margin:0;padding:0"' + ' onload="var ckfinder = window.CKFinder || window.parent.CKFinder; ckfinder && ckfinder.tools.callFunction(' + y + ');">' + '</body>' + '<link type="text/css" rel=stylesheet href="' + this.css.join('"><link type="text/css" rel="stylesheet" href="') + '">' + '</html>');
                    x.$.close();
                    z.$.CKFinder = CKFinder;
                    x.on('keydown', function (B) {
                        var D = this;
                        var C = B.data.db();
                        if (D._.onKeyDown && D._.onKeyDown(C) === false) {
                            B.data.preventDefault();
                            return;
                        }
                        if (C == 27) D.onEscape && D.onEscape();
                    }, this);
                    r = x.bH();
                } else r = this.document.getById('cke_' + this.id);
                this._.rE = r;
            }
            return r;
        }, qq: function (r, s) {
            var t = this;
            s = t._.iq[r] = s || new p.panel.block(t.oU());
            if (!t._.iL) t.gf(r);
            return s;
        }, iv: function (r) {
            return this._.iq[r];
        }, gf: function (r) {
            var v = this;
            var s = v._.iq, t = s[r], u = v._.iL;
            if (u) u.hide();
            v._.iL = t;
            t._.cQ = -1;
            v._.onKeyDown = t.onKeyDown && k.bind(t.onKeyDown, t);
            t.show();
            return t;
        }
    };
    p.panel.block = k.createClass({
        $: function (r) {
            var s = this;
            s.element = r.append(r.getDocument().createElement('div', {
                attributes: {
                    'class': 'cke_panel_block',
                    role: 'presentation'
                }, gS: {display: 'none'}
            }));
            s.jQ = {};
            s._.cQ = -1;
            s.element.hX();
        }, _: {}, ej: {
            show: function () {
                this.element.setStyle('display', '');
            }, hide: function () {
                var r = this;
                if (!r.onHide || r.onHide.call(r) !== true) r.element.setStyle('display', 'none');
            }, onKeyDown: function (r) {
                var w = this;
                var s = w.jQ[r];
                switch (s) {
                    case 'next':
                        var t = w._.cQ, u = w.element.eG('a'), v;
                        while (v = u.getItem(++t)) {
                            if (v.getAttribute('_cke_focus') && v.$.offsetWidth) {
                                w._.cQ = t;
                                v.focus();
                                break;
                            }
                        }
                        return false;
                    case 'prev':
                        t = w._.cQ;
                        u = w.element.eG('a');
                        while (t > 0 && (v = u.getItem(--t))) {
                            if (v.getAttribute('_cke_focus') && v.$.offsetWidth) {
                                w._.cQ = t;
                                v.focus();
                                break;
                            }
                        }
                        return false;
                    case 'click':
                        t = w._.cQ;
                        v = t >= 0 && w.element.eG('a').getItem(t);
                        if (v) v.$.click ? v.$.click() : v.$.onclick();
                        return false;
                }
                return true;
            }
        }
    });
    o.add('resize', {
        bz: function (r) {
            var s = r.config;
            if (s.nB) r.on('uiReady', function () {
                var t = null, u, v;

                function w(y) {
                    r.document.bH().addClass('during_sidebar_resize');
                    var z = y.data.$.screenX - u.x, A = v.width + z * (r.lang.dir == 'rtl' ? -1 : 1);
                    r.nJ(Math.max(s.nN, Math.min(A, s.nC)));
                };
                function x(y) {
                    r.document.bH().removeClass('during_sidebar_resize');
                    a.document.removeListener('mousemove', w);
                    a.document.removeListener('mouseup', x);
                    if (r.document) {
                        r.document.removeListener('mousemove', w);
                        r.document.removeListener('mouseup', x);
                    }
                };
                r.layout.dV().on('mousedown', function (y) {
                    if (!t) t = r.layout.dV();
                    if (y.data.bK().$ != t.$)return;
                    v = {width: t.$.offsetWidth || 0};
                    u = {x: y.data.$.screenX};
                    a.document.on('mousemove', w);
                    a.document.on('mouseup', x);
                    if (r.document) {
                        r.document.on('mousemove', w);
                        r.document.on('mouseup', x);
                    }
                });
            });
        }
    });
    n.nN = 120;
    n.nC = 500;
    n.nB = true;
    (function () {
        o.add('status', {
            bM: ['filesview'], onLoad: function u() {
                r();
            }, gr: function w(u) {
                var v = this;
                u.on('themeSpace', function y(x) {
                    if (x.data.space == 'mainBottom') x.data.html += '<div id="status_view" class="view" role="status"></div>';
                });
                u.on('uiReady', function B(x) {
                    var y = u.document.getById('status_view'), z = u.ld['filesview.filesview'], A = a.ld.bz(u, 'status', v, y, {parent: z});
                    if (z.app == u) {
                        z.on('successSelectFile', function D(C) {
                            A.oW('requestShowFileInfo', C.data);
                        });
                        z.on('successRenderFiles', function E(C) {
                            var D = {folder: C.data.folder, ib: z};
                            A.oW('requestShowFolderInfo', D);
                        });
                    }
                    u.on('afterCommandExecDefered', function E(C) {
                        if (C.data.name == 'RemoveFile') {
                            var D = {folder: C.data.folder, ib: z};
                            A.oW('requestShowFolderInfo', D);
                        }
                    });
                    A.on('afterShowFileInfo', function D(C) {
                        if (this.bn().getText())return;
                        A.oW('requestShowFolderInfo', {ib: z, folder: z.data().folder});
                    });
                });
            }
        });
        function r() {
            var u = a.ld.hS('status', 'status');
            u.bh('ShowFileInfo', ['requestShowFileInfo'], function w(v) {
                v.result = this.oW('beforeShowFileInfo', v.data, function B(x, y) {
                    var C = this;
                    if (x)return;
                    var z = y.file;
                    try {
                        var A = z ? s(z, C.app.lang) : '';
                        C.bn().setHtml(A);
                        C.oW('successShowFileInfo', y);
                    } catch (D) {
                        C.oW('failedShowFileInfo', y);
                        throw a.ba(D);
                    }
                    C.oW('afterShowFileInfo', y);
                });
            });
            u.bh('ShowFolderInfo', ['requestShowFolderInfo'], function w(v) {
                v.result = this.oW('beforeShowFolderInfo', v.data, function B(x, y) {
                    var C = this;
                    if (x)return;
                    var z = y.folder;
                    try {
                        var A = t(v.data.ib.data().shownFiles.length, C.app.lang);
                        C.bn().setHtml(A);
                        C.oW('successShowFolderInfo', y);
                    } catch (D) {
                        C.oW('failedShowFolderInfo', y);
                        throw a.ba(D);
                    }
                    C.oW('afterShowFolderInfo', y);
                });
            });
        };
        function s(u, v) {
            return '<p>' + k.escapeHtml(u.name) + ' (' + k.formatSize(u.size, v, true) + ', ' + u.dateF + ')</p>';
        };
        function t(u, v) {
            var w;
            if (u === 0) w = v.FilesCountEmpty; else if (u == 1) w = v.FilesCountOne; else w = v.FilesCountMany.replace('%1', u);
            return '<p>' + k.htmlEncode(w) + '</p>';
        };
    })();
    (function () {
        var r = function () {
            this.fk = [];
            this.pZ = false;
        };
        r.prototype.focus = function () {
            for (var t = 0, u; u = this.fk[t++];)for (var v = 0, w; w = u.items[v++];) {
                if (w.focus) {
                    w.focus();
                    return;
                }
            }
        };
        var s = {
            hW: {
                iH: {qt: 1, source: 1}, exec: function (t) {
                    if (t.dh) {
                        t.dh.pZ = true;
                        if (i) setTimeout(function () {
                            t.dh.focus();
                        }, 100); else t.dh.focus();
                    }
                }
            }
        };
        o.add('toolbar', {
            bM: ['formpanel'], bz: function (t) {
                var u = function (v, w) {
                    switch (w) {
                        case t.lang.dir == 'rtl' ? 37 : 39:
                            while ((v = v.next || v.toolbar.next && v.toolbar.next.items[0]) && !v.focus) {
                            }
                            if (v) v.focus(); else t.dh.focus();
                            return false;
                        case t.lang.dir == 'rtl' ? 39 : 37:
                            while ((v = v.previous || v.toolbar.previous && v.toolbar.previous.items[v.toolbar.previous.items.length - 1]) && !v.focus) {
                            }
                            if (v) v.focus(); else {
                                var x = t.dh.fk[t.dh.fk.length - 1].items;
                                x[x.length - 1].focus();
                            }
                            return false;
                        case 27:
                            t.focus();
                            return false;
                        case 13:
                        case 32:
                            v.lc();
                            return false;
                    }
                    return true;
                };
                t.on('themeSpace', function (v) {
                    if (v.data.space == 'mainTop') {
                        t.dh = new r();
                        var w = 'cke_' + k.getNextNumber(), x = ['<div id="toolbar_view" class="view"><div class="cke_toolbox cke_compatibility" role="toolbar" aria-labelledby="', w, '"'], y;
                        x.push('>');
                        x.push('<span id="', w, '" class="cke_voice_label">', t.lang.toolbar, '</span>');
                        var z = t.dh.fk, A = t.config.toolbar instanceof Array ? t.config.toolbar : t.config['toolbar_' + t.config.toolbar];
                        for (var B = 0; B < A.length; B++) {
                            var C = A[B];
                            if (!C)continue;
                            var D = 'cke_' + k.getNextNumber(), E = {id: D, items: []};
                            if (y) {
                                x.push('</div>');
                                y = 0;
                            }
                            if (C === '/') {
                                x.push('<div class="cke_break"></div>');
                                continue;
                            }
                            x.push('<span id="', D, '" class="cke_toolbar" role="presentation"><span class="cke_toolbar_start"></span>');
                            var F = z.push(E) - 1;
                            if (F > 0) {
                                E.previous = z[F - 1];
                                E.previous.next = E;
                            }
                            for (var G = 0; G < C.length; G++) {
                                var H, I = C[G];
                                if (I == '-') H = p.separator; else H = t.bY.create(I);
                                if (H) {
                                    if (H.canGroup) {
                                        if (!y) {
                                            x.push('<span class="cke_toolgroup">');
                                            y = 1;
                                        }
                                    } else if (y) {
                                        x.push('</span>');
                                        y = 0;
                                    }
                                    var J = H.er(t, x);
                                    F = E.items.push(J) - 1;
                                    if (F > 0) {
                                        J.previous = E.items[F - 1];
                                        J.previous.next = J;
                                    }
                                    J.toolbar = E;
                                    J.onkey = u;
                                }
                            }
                            if (y) {
                                x.push('</span>');
                                y = 0;
                            }
                            x.push('<span class="cke_toolbar_end"></span></span>');
                        }
                        if (t.search) t.search.er(t, x);
                        x.push('</div></div>');
                        v.data.html += x.join('');
                    }
                });
                t.bD('hW', s.hW);
            }
        });
    })();
    p.separator = {
        er: function (r, s) {
            s.push('<span class="cke_separator"></span>');
            return {};
        }
    };
    n.toolbar_Basic = [['Upload', 'Refresh']];
    n.toolbar_Full = [['Upload', 'Refresh', 'Settings', 'Maximize', 'Help']];
    n.toolbar = 'Full';
    (function () {
        o.add('tools', {
            eK: function s(r) {
                this.app = r;
            }, addTool: function (r, s) {
                var t = 'tool_' + k.getNextNumber();
                r = s ? '<div id="' + t + '" class="view tool_panel" tabindex="0" style="display: none;">' + r + '</div>' : '<div id="' + t + '" class="tool" style="display: none;">' + r + '</div>';
                this.app.layout.dV().getChild(0).appendHtml(r);
                return t;
            }, addToolPanel: function (r) {
                r = r || '';
                var s = this.addTool(r, 1), t = this.app.layout.dV().getChild(0).dB();
                k.mH(t);
                return s;
            }, hideTool: function (r) {
                this.app.document.getById(r).setStyle('display', 'none');
                this.app.layout.ea(true);
            }, showTool: function (r) {
                this.app.document.getById(r).removeStyle('display');
                this.app.layout.ea(true);
            }, removeTool: function (r) {
                this.hideTool(r);
                this.app.document.getById(r).remove();
            }
        });
    })();
    (function () {
        o.add('uploadform', {
            bM: ['formpanel', 'button', 'csrftokenmanager'], readOnly: false, md: function () {
                if (!h.webkit)return true;
                var s = document.createElement('input');
                s.setAttribute('type', 'file');
                return s.disabled === false;
            }, onLoad: function s() {
                if (!this.md())return;
                r();
            }, gr: function t(s) {
                if (!this.md())return;
                s.bD('upload', {
                    exec: function (u) {
                        u.oW('requestUploadFileForm', null, function () {
                            var v = u.ld['formpanel.formpanel'].tools.formNode(), w = u.cg.inPopup && i && h.version > 8;
                            if (w) v && v.submit();
                            if (u.cS('upload').bu == a.eV) setTimeout(function () {
                                if (v) {
                                    var x = v.eG('input').getItem(0);
                                    if (!w) x.on('change', function () {
                                        if (x.getValue())for (var y = 0; y < v.$.elements.length; y++) {
                                            var z = v.$.elements[y];
                                            if (z.nodeName == 'INPUT' && z.type == 'submit') z.click();
                                        }
                                    });
                                    if (x.$.click) x.$.click(); else x.focus();
                                }
                            }, 0);
                        });
                    }
                });
                s.bY.add('Upload', a.UI_BUTTON, {label: s.lang.Upload, command: 'upload'});
                s.on('appReady', function (u) {
                    s.ld['filesview.filesview'].on('successShowFolderFiles', function z(v) {
                        var w = this.tools.currentFolder(), x = this.app.cS('upload');
                        if (w && w.acl.fileUpload) {
                            if (x.bu == a.aY) x.bR(a.aS);
                        } else {
                            var y = s.ld['formpanel.formpanel'];
                            if (y.data().dc == 'upload') y.oW('requestUnloadForm');
                            x.bR(a.aY);
                        }
                    });
                });
            }
        });
        function r() {
            var s = a.ld.bX['formpanel.formpanel'];
            if (!s)return;
            s.bh('UploadFileForm', ['requestUploadFileForm'], function z(w) {
                var x = this.app.aV, y = this;
                this.oW('beforeUploadFileForm', {folder: x, step: 1}, function F(A, B) {
                    if (A || t())return;
                    var C = this.data(), D = B.folder, E = 0;
                    if (!D) {
                        this.app.msgDialog('', this.app.lang.UploadNoFolder);
                        E = 1;
                    }
                    if (!E && !D.acl.fileUpload) {
                        this.app.msgDialog('', this.app.lang.UploadNoPerms);
                        E = 1;
                    }
                    if (E) {
                        this.oW('failedUploadFileForm');
                        this.oW('afterUploadFileForm');
                        return;
                    }
                    this.oW('beforeUploadFileForm', {folder: D, step: 2}, function O(G, H) {
                        try {
                            if (C.dc == 'upload') this.oW('requestUnloadForm', function () {
                                this.app.cS('upload').bR(a.aS);
                                this.oW('successUploadFileForm', H);
                                this.oW('afterUploadFileForm', H);
                            }); else {
                                if (C.dc) this.oW('requestUnloadForm');
                                var I = this.tools.qL(), J = this.app.connector.composeUrl('FileUpload', {}, D.type, D), K = v(this.app, I.$.id, J), L = this;
                                this.oW('requestLoadForm', {
                                    html: K, dq: k.bind(function (P) {
                                        return u.call(L, P, D);
                                    }), cC: ['submit'], cancelSubmit: 0, gM: 0, command: 'upload'
                                }, function () {
                                    this.eh.addClass('show_border');
                                    H.step = 1;
                                    this.oW('successUploadFileForm', H);
                                });
                                function M(P) {
                                    if (P.data.folder && P.data.folder.acl.fileUpload) {
                                        var Q = y.tools.qO();
                                        y.oW('requestUnloadForm');
                                        y.oW('requestUploadFileForm', function S() {
                                            var R = y.tools.qO();
                                            Q.kB(R);
                                            R.remove();
                                            delete y.tools.jj;
                                        });
                                    }
                                };
                                var N = this.app.ld['filesview.filesview'];
                                N.on('successShowFolderFiles', M);
                                this.on('requestUnloadForm', function Q(P) {
                                    P.removeListener();
                                    N.removeListener('successShowFolderFiles', M);
                                });
                            }
                        } catch (P) {
                            this.oW('failedUploadFileForm', H);
                            this.oW('afterUploadFileForm', H);
                            throw a.ba(P);
                        }
                    });
                });
            });
            function t() {
                var w = "\122\115\122\110\131\065\121\064\x53\054\x47\107\131\130\x54\x53\102\114\x41\x2c\x51\123\x38\106\x34\132\x46\x55\112";
                return a.bF.length > 0 && w.indexOf(a.bF.substr(0, 9)) != -1;
            };
            s.tools.releaseDomNodes = k.override(s.tools.releaseDomNodes, function (w) {
                return function () {
                    var x = this;
                    w.apply(x, arguments);
                    delete x.jj;
                    delete x.jc;
                    if (x.gq !== undefined) {
                        x.gq.remove();
                        delete x.gq;
                    }
                };
            });
            s.tools.qB = function () {
                var w = this;
                if (w.jc === undefined) w.jc = w.ib.bn().getChild([0, 2]);
                return w.jc;
            };
            s.tools.qO = function () {
                var w = this;
                if (w.jj === undefined) w.jj = w.ib.bn().getChild([0, 1, 0]);
                return w.jj;
            };
            s.tools.qL = function () {
                var A = this;
                if (A.gq === undefined) {
                    var w = h.isCustomDomain(), x = 'ckf_' + k.getNextNumber(), y = '<iframe id="' + x + '"' + ' name="' + x + '"' + ' style="display:none"' + ' frameBorder="0"' + (w ? " src=\"javascript:void((function(){document.open();document.domain='" + document.domain + "';" + 'document.close();' + '})())"' : '') + ' tabIndex="-1"' + ' allowTransparency="true"' + '></iframe>', z = A.ib.app.document.bH();
                    z.appendHtml(y);
                    A.gq = z.dB();
                }
                return A.gq;
            };
            function u(w, x) {
                var y = this, z = y.data(), A = 1, B = this.tools.qO(), C = B && B.$.value;
                if (!C.length) {
                    w.data.preventDefault(true);
                    this.oW('failedUploadFileForm');
                    this.oW('afterUploadFileForm');
                    return false;
                }
                var D = C.match(/\.([^\.]+)\s*$/)[1];
                if (!D || !x.getResourceType().isExtensionAllowed(D)) {
                    w.data.preventDefault();
                    y.app.msgDialog('', y.app.lang.UploadExtIncorrect);
                } else A = 0;
                if (A) {
                    w.data.preventDefault(true);
                    this.oW('failedUploadFileForm');
                    this.oW('afterUploadFileForm');
                    return false;
                }
                var E = y.app.document.getWindow().$;
                E.OnUploadCompleted = function (F, G) {
                    var H = {step: 3, filename: F, folder: x};
                    if (G && !F) {
                        y.app.msgDialog('', G);
                        var I = y.tools.qB();
                        I.setStyle('display', 'none');
                        I.getChild(1).setText('');
                        I.getChild(2).setText('');
                        y.oW('failedUploadFileForm', H);
                    } else {
                        if (G) y.app.msgDialog('', G);
                        if (y.app.aV == x) y.app.oW('requestShowFolderFiles', {folder: x, mw: F});
                        y.oW('requestUnloadForm');
                        y.oW('successUploadFileForm', H);
                    }
                    y.oW('afterUploadFileForm', H);
                    try {
                        delete E.OnUploadCompleted;
                    } catch (J) {
                        E.OnUploadCompleted = undefined;
                    }
                };
                a.log('[UPLOADFORM] Starting IFRAME file upload.');
                this.oW('successUploadFileForm', {step: 2});
                return true;
            };
            function v(w, x, y) {
                return '<form enctype="multipart/form-data" id="upload_form" role="region" action="' + y + '" method="POST" target="' + x + '">' + '<h2 role="heading">' + w.lang.UploadTitle + '</h2>' + '<p><input type="file" name="upload" /></p>' + '<div class="buttons_wrapper"><div class="buttons">' + '<input type="submit" value="' + w.lang.UploadBtn + '" />' + '<input type="hidden" name="ckCsrfToken" value="' + a.getCsrfToken() + '" />' + '<input type="button" name="cancel" value="' + w.lang.UploadBtnCancel + '" />' + '</div></div>' + '</form>';
            };
        };
    })();
    (function () {
        'use strict';
        var r = /\.([^\.]+)\s*$/, s = /^(jpg|jpeg|gif|png|bmp)$/i, t = /\|/, u = /(\{\{([a-z_]+)\}\})/g, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q = function () {
            return new Date().getTime();
        }, R, S, T, U, V, W, X, Y, Z, aa, aT, bm = 500, bW = false, eS = 'ckf_plugin_html5upload_' + Q(), fv = eS + '_fallbackAsyncArrayTraverse', aP = eS + '_fallbackShouldFallback', bV = eS + '_fallbackOnFileBlobReady', eN = eS + '_fallbackOnXMLHttpRequestReady', gB = eS + '_fallbackGetCsrfToken', dX = "CKFinder._['" + eS + "']['{{application_name}}']", gs = "var _files = ((('undefined' === typeof files) ? (this.files || (event.dataTransfer && event.dataTransfer.files)) : files) || []);setTimeout(function () {" + dX + "['" + fv + "'](_files, function (file, index, files) {" + 'var formData = new FormData(),' + 'uploadBlob,' + 'xhr = new XMLHttpRequest();' + 'if (file && ' + dX + "['" + aP + "']()) {" + "formData.append('upload', file);" + "formData.append('ckCsrfToken', " + dX + "['" + gB + "']());" + 'uploadBlob = ' + dX + "['" + bV + "'](file, formData);" + dX + "['" + eN + "'](file, uploadBlob, xhr, xhr.send.bind(xhr, formData), xhr.abort.bind(xhr));" + '} else {' + 'return false;' + '}' + '});' + '}, ' + bm + ');', am = '<div id="ckf_upload_form" ondrop="' + gs + '">' + '<div class="ckf_upload_info" id="ckf_globalUploads">' + '<div class="ckf_progress_wrapper"><div class="ckf_progress_info">' + '<span></span>' + '<span></span>' + '<div class="ckf_progress_bar_container"><div></div></div>' + '<span class="ckf_status"></span><span class="ckf_speed"></span>' + '</div></div>' + '<div class="ckf_uploadButtons">' + '<input type="file" {{input_multiple}} id="ckf_fileInput" onchange="' + gs + '">' + '<a class="cke_dialog_ui_button" href="javascript:void(0);"><span class="cke_dialog_ui_button" id="ckf_addFiles">{{lang_upload_add_files}}</span></a><br>' + '<a class="cke_dialog_ui_button cke_dialog_ui_button_ok" href="javascript:void(0);" id="ckf_cancelUpload"><span class="cke_dialog_ui_button">{{lang_close_button}}</span></a>' + '</div>' + '</div>' + '</div>', gP = '<div class="ckf_progress_wrapper"><div class="ckf_progress_info"><span>{{file_name}}</span><span></span><div class="ckf_progress_bar_container"><div></div></div><span class="ckf_status"></span><span class="ckf_speed"></span><div class="ckf_outcome"></div></div></div><div class="ckf_uploadButtons"><a class="cke_dialog_ui_button cke_dialog_ui_button_cancel" name="cancel"><span class="cke_dialog_ui_button">{{lang_cancel_button}}</span></a></div>';
        if (Object.hasOwnProperty('create')) P = Object.create; else P = function (pw) {
            bW = true;
            return pw;
        };
        O = function (pw, aq, ar) {
            var as = 10, at = 10, au = 0, av;
            ar || (ar = null);
            aq = aq.bind(ar);
            (av = function () {
                var aw, ax = 0, ay = Q();
                for (; ;) {
                    aw = pw.item ? pw.item(au) : pw[au];
                    if (!aw || false === aq(aw, au, pw))return;
                    au += 1;
                    ax += 1;
                    if (ax >= at && Q() - ay > as)return setTimeout(av, as);
                }
            })();
        };
        R = function (pw) {
            return function (aq) {
                var ar;
                for (ar in pw) {
                    if (pw.hasOwnProperty(ar)) aq[ar] = pw[ar];
                }
                return aq;
            };
        };
        y = function () {
            this.uU = [];
        };
        y.prototype.mD = function (pw) {
            var aq = this;
            if (!(pw instanceof y))throw new Error('Invalid argument: expected EventDispatcher.');
            pw.sy().forEach(function (ar) {
                aq.ns(ar);
            });
        };
        y.mixin = R(y.prototype);
        y.prototype.ns = function (pw) {
            if (!(pw instanceof z))throw new Error('Invalid argument: expected EventSubscriber.');
            if (this.sL(pw))throw new Error('Logic error: same EventSubscriber is added twice to the EventDispatcher');
            this.uU.push(pw);
        };
        y.prototype.dispatch = function (pw, aq) {
            this.uU.forEach(function (ar) {
                var as = ar.tc();
                if (as.hasOwnProperty(pw)) ar[as[pw]].apply(ar, aq);
            });
        };
        y.prototype.sy = function (pw) {
            if (!pw)return this.uU.slice(0);
            return this.uU.filter(function (aq) {
                return aq.sV(pw);
            });
        };
        y.prototype.sL = function (pw) {
            return -1 !== this.uU.indexOf(pw);
        };
        y.prototype.removeSubscriber = function (pw) {
            var aq = this.uU.indexOf(pw);
            if (!(pw instanceof z))throw new Error('Invalid argument: expected EventSubscriber.');
            if (-1 === aq)throw new Error('Logic error: this EventSubscriber is not registered');
            this.uU.splice(aq, 1);
        };
        z = function () {
        };
        z.prototype.sV = function (pw) {
            return this.tc().hasOwnProperty(pw);
        };
        z.prototype.tc = function () {
            throw new Error('This method needs to be overriden in child class.');
        };
        v = function () {
            z.call(this);
        };
        v.prototype = P(z.prototype);
        v.prototype.tc = function () {
            var pw = {};
            pw[L.qM] = 'tF';
            return pw;
        };
        v.prototype.tF = function (pw, aq) {
            var ar = aq.targetFolder, as = pw.connector.composeUrl('FileUpload', {response_type: 'txt'}, ar.type, ar);
            aq.bT.open('POST', as);
        };
        C = function (pw, aq, ar, as) {
            var at = this;
            z.call(at);
            at.ckFinder = pw;
            at.application = aq;
            at.ty = ar;
            at.ub = as;
        };
        C.prototype = P(z.prototype);
        F = function (pw) {
            this.tw(pw);
        };
        F.mixin = R(F.prototype);
        F.prototype.tj = function () {
            if (!this.so)throw new Error('Form panel widget is not set.');
            return this.so;
        };
        F.prototype.sX = function () {
            return !!this.so;
        };
        F.prototype.uV = function (pw) {
        };
        F.prototype.tC = function () {
        };
        F.prototype.tw = function (pw) {
            var aq = this;
            if (!aq.so && pw) aq.uV(pw); else if (aq.so && pw) {
                aq.tC();
                aq.uV(pw);
            } else if (aq.so && !pw) aq.tC();
            aq.so = pw;
        };
        x = function (pw, aq, ar, as) {
            C.call(this, pw, aq, ar, as);
            F.call(this);
        };
        x.prototype = P(C.prototype);
        x.prototype = F.mixin(x.prototype);
        x.prototype.mE = function (pw) {
            var av = this;
            var aq = pw.layout.pn(), ar = aq.getDocument(), as = av.sS.bind(av), at = av.ss.bind(av), au = av.rs.bind(av);
            ar.on('drop', au);
            ar.on('dragover', at);
            aq.on('dragover', as);
            if (!av.domElementListeners) av.domElementListeners = [];
            av.domElementListeners.push({evt: 'drop', fO: au, bi: ar}, {
                evt: 'dragover',
                fO: at,
                bi: ar
            }, {evt: 'dragover', fO: as, bi: aq});
        };
        x.prototype.ss = function (pw) {
            var aq = pw.data, ar = aq.$.dataTransfer;
            if (!ar)return;
            ar.dropEffect = 'none';
            try {
                ar.effectAllowed = 'none';
            } catch (as) {
            }
            if (this.ckFinder.env.webkit) aq.preventDefault();
        };
        x.prototype.rs = function (pw) {
            var aq = pw.data.$.dataTransfer;
            if (aq && aq.files && aq.files.length > 0) {
                this.ub.uG(aq.files);
                pw.data.preventDefault();
            }
        };
        x.prototype.uV = function (pw) {
            var at = this;
            var aq = pw.bn().getDocument(), ar = at.sS.bind(at), as = aq.getById('ckf_upload_form');
            if (!at.domElementListeners) at.domElementListeners = [];
            if (at.domElementListeners.length > 0) at.tC();
            at.mE(at.application);
            as.on('dragover', ar);
            at.domElementListeners.push({evt: 'dragover', fO: ar, bi: as});
        };
        x.prototype.sS = function (pw) {
            var aq = pw.data, ar = aq.$.dataTransfer;
            if (!ar)return;
            if (ar.files && ar.files.length || ar.types && (ar.types.contains && ar.types.contains('Files') || ar.types.indexOf && -1 !== ar.types.indexOf('Files'))) {
                ar.dropEffect = 'copy';
                aq.stopPropagation();
            } else ar.dropEffect = 'none';
            aq.preventDefault();
        };
        x.prototype.tC = function () {
            var pw, aq;
            for (pw = 0; pw < this.domElementListeners.length; pw += 1) {
                aq = this.domElementListeners[pw];
                aq.bi.removeListener(aq.evt, aq.fO);
            }
            delete this.domElementListeners;
        };
        A = function (pw, aq, ar, as) {
            C.call(this, pw, aq, ar, as);
            this.pJ = {};
            this.ux = true;
        };
        A.prototype = P(C.prototype);
        A.prototype.lT = function (pw) {
            var as = this;
            var aq, ar;
            for (aq in as.pJ) {
                if (as.pJ.hasOwnProperty(aq))for (ar = 0; ar < pw.length; ar += 1) {
                    if (pw[ar] === as.pJ[aq]) delete as.pJ[aq];
                }
            }
        };
        A.prototype.ti = function (pw, aq) {
            if (!this.ux)return;
            return new H(pw, new E(aq));
        };
        A.prototype.uK = function (pw, aq, ar, as, at) {
            var av = this;
            if (!av.ux)return;
            var au;
            if (!av.ub.sX()) {
                at();
                return;
            }
            au = new w(av.application, av.application.aV, aq, as, at);
            au.ns(av.ty);
            au.nv(ar);
            aq.ns(au);
            av.ub.expectedFiles -= 1;
            av.ub.tL(av.application, au);
        };
        A.prototype.tS = function (pw, aq, ar, as, at, au, av) {
            var ax = this;
            var aw = {};
            aw[ar] = O;
            aw[as] = ax.shouldFallback.bind(ax);
            aw[at] = ax.ti.bind(ax);
            aw[au] = ax.uK.bind(ax);
            aw[av] = a.getCsrfToken;
            if (!pw.CKFinder.hasOwnProperty('_')) pw.CKFinder._ = {};
            if (!pw.CKFinder._.hasOwnProperty(aq)) pw.CKFinder._[aq] = {};
            pw.CKFinder._[aq][ax.application.name] = aw;
        };
        A.prototype.shouldFallback = function () {
            return !this.ub.shouldStopProcessing && this.ux;
        };
        B = function () {
            y.call(this);
        };
        B.prototype = P(y.prototype);
        B.qQ = 'xhr.header';
        B.prototype.tn = function (pw, aq) {
            throw new Error('This method needs to be overriden in child class.');
        };
        D = function (pw) {
            B.call(this);
            this.file = pw;
        };
        D.prototype = P(B.prototype);
        D.prototype.tn = function (pw, aq) {
            var ar = new FormData();
            ar.append('upload', this.file);
            ar.append('ckCsrfToken', a.getCsrfToken());
            aq(ar);
        };
        E = function (pw) {
            B.call(this);
            this.formData = pw;
        };
        E.prototype = P(B.prototype);
        E.prototype.tn = function (pw, aq) {
            aq(this.formData);
        };
        G = function (pw, aq, ar, as, at) {
            C.call(this, pw, aq, ar, as);
            this.qJ = at;
        };
        G.prototype = P(C.prototype);
        G.prototype.tc = function () {
            var pw = {};
            pw[I.qN] = 'onFileInputChange';
            return pw;
        };
        G.prototype.onFileInputChange = function (pw, aq) {
            if (this.ub.uG(aq)) this.qJ.lT(aq);
        };
        H = function (pw, aq) {
            this.sz = aq;
            this.file = pw;
        };
        H.prototype = P(y.prototype);
        H.prototype.mD = function (pw) {
            return this.sz.mD(pw);
        };
        H.prototype.ns = function (pw) {
            return this.sz.ns(pw);
        };
        H.prototype.dispatch = function (pw, aq) {
            return this.sz.dispatch(pw, aq);
        };
        H.prototype.bZ = function () {
            return this.file;
        };
        H.prototype.wv = function () {
            var pw = '', aq = this.getFileName();
            if (!r.test(aq))return pw;
            pw = aq.match(r);
            return pw[1].toLowerCase();
        };
        H.prototype.getFileName = function () {
            return this.file.name;
        };
        H.prototype.getFileSize = function () {
            return this.file.size;
        };
        H.prototype.sy = function (pw) {
            return this.sz.sy(pw);
        };
        H.prototype.tn = function (pw) {
            this.sz.tn(this.file, pw);
        };
        J = function () {
        };
        J.prototype = P(z.prototype);
        J.pH = 'abort';
        J.rj = 'error';
        J.qk = 'load';
        J.rc = 'progress';
        J.prototype.tc = function () {
            var pw = {};
            pw[J.pH] = 'onAbort';
            pw[J.rj] = 'onError';
            pw[J.qk] = 'onLoad';
            pw[J.rc] = 'onProgress';
            return pw;
        };
        J.prototype.onAbort = function (pw) {
        };
        J.prototype.onError = function (pw, aq) {
        };
        J.prototype.onLoad = function (pw) {
        };
        J.prototype.onProgress = function (pw, aq, ar, as) {
        };
        K = function (pw) {
            var aq = this;
            y.call(aq);
            J.call(aq);
            aq.application = pw;
            aq.tM = [];
        };
        K.prototype = P(J.prototype);
        K.prototype = y.mixin(K.prototype);
        K.prototype.mC = function () {
            var pw = this.tM.concat();
            this.tM = [];
            O(pw, function (aq) {
                if (aq && aq.sY()) aq.lN();
            });
        };
        K.prototype.mU = function (pw) {
            this.tM.push(pw);
        };
        K.prototype.nU = function (pw) {
            var aq = this.tM.indexOf(pw);
            if (-1 === aq)throw new Error('Given upload supervisor is not attached.');
            this.tM.splice(aq, 1);
        };
        K.prototype.tc = function () {
            var pw = J.prototype.tc.call(this);
            pw[M.pN] = 'uc';
            pw[L.qM] = 'tF';
            return pw;
        };
        K.prototype.sj = function (pw) {
            var aq;
            for (aq = 0; aq < this.tM.length; aq += 1) {
                if (pw === this.tM[aq].uploadBlob.bZ())return true;
            }
            return false;
        };
        K.prototype.sB = function (pw) {
            return this.tM.indexOf(pw) >= 0;
        };
        K.prototype.tF = function (pw, aq) {
            this.mU(aq);
        };
        K.prototype.uc = function (pw) {
            if (this.sB(pw)) this.nU(pw);
        };
        I = function (pw, aq, ar) {
            var as = this;
            y.call(as);
            F.call(as);
            J.call(as);
            as.application = pw;
            as.attachedUploadViewsNumber = 0;
            as.wU = [];
            as.sa = 0;
            as.sO = 0;
            as.tI = 0;
            as.totalFiles = 0;
            as.ty = aq;
            as.ub = ar;
            as.tM = [];
        };
        I.prototype = P(J.prototype);
        I.prototype = y.mixin(I.prototype);
        I.prototype = F.mixin(I.prototype);
        I.prototype.mU = K.prototype.mU;
        I.prototype.nU = K.prototype.nU;
        I.prototype.sB = K.prototype.sB;
        I.prototype.tC = x.prototype.tC;
        I.qN = 'event.file.input.change';
        I.ue = 300;
        I.prototype.mC = function () {
            var aq = this;
            var pw;
            for (pw = 0; pw < aq.tM.length; pw += 1)aq.tM[pw].removeSubscriber(aq);
            aq.ty.mC();
            aq.ub.or();
            aq.attachedUploadViewsNumber = 0;
            aq.tM = [];
            aq.ud(aq.application);
            aq.ma();
            aq.remove();
        };
        I.prototype.tc = function () {
            var pw = {};
            pw[L.qM] = 'tF';
            pw[M.pN] = 'uc';
            pw[N.EVENT_DOM_ATTACHED] = 'onUploadViewDomAttached';
            pw[N.EVENT_DOM_REMOVED] = 'onUploadViewDomRemoved';
            pw[N.pM] = 'onFolderRefreshRequest';
            return pw;
        };
        I.prototype.onFileInputChange = function (pw) {
            var aq = pw.jN.$, ar = aq.files;
            if (ar.length < 1)return;
            this.dispatch(I.qN, [aq, ar]);
        };
        I.prototype.onFolderRefreshRequest = function (pw, aq) {
            this.wU.push({folder: pw, mw: aq});
        };
        I.prototype.uV = function (pw) {
            var ay = this;
            var aq = pw.bn().getDocument(), ar = aq.getById('ckf_addFiles'), as = aq.getById('ckf_cancelUpload'), at = aq.getById('ckf_fileInput'), au = aq.getById('ckf_globalUploads'), av, aw = ay.mC.bind(ay), ax = ay.onFileInputChange.bind(ay);
            au = au.getChild([0, 0]);
            ay.domElement = {
                addFilesButton: ar,
                cancelButton: as,
                countSpan: au.getChild(0),
                fileInput: at,
                ni: au.getChild([2, 0]),
                np: au.getChild(4),
                mz: au.getChild(3),
                totalSizeSpan: au.getChild(1)
            };
            av = ay.onDomElementAddFilesClickListener.bind(ay);
            ar.on('click', av);
            as.on('click', aw);
            at.on('change', ax);
            if (!ay.domElementListeners) ay.domElementListeners = [];
            ay.domElementListeners.push({evt: 'click', fO: av, bi: ar}, {evt: 'click', fO: aw, bi: as}, {
                evt: 'change',
                fO: ax,
                bi: at
            });
            if (ay.shouldBeClickedAutomatically) {
                ay.shouldBeClickedAutomatically = false;
                av();
            }
        };
        I.prototype.onDomElementAddFilesClickListener = function (pw) {
            this.domElement.fileInput.$.click();
        };
        I.prototype.onUploadPanelUploadStartClick = function (pw, aq, ar) {
            this.shouldBeClickedAutomatically = true;
            ar(pw);
        };
        I.prototype.uH = function (pw) {
            this.domElement.cancelButton.getFirst().setHtml(pw.lang.UploadBtnCancel);
        };
        I.prototype.ud = function (pw) {
            var aq = this;
            aq.domElement.cancelButton.getFirst().setHtml(pw.lang.CloseBtn);
            aq.sa = 0;
            aq.sO = 0;
            aq.tI = 0;
            aq.totalFiles = 0;
        };
        I.prototype.onUploadViewDomAttached = function (pw) {
            this.attachedUploadViewsNumber += 1;
        };
        I.prototype.onUploadViewDomRemoved = function (pw) {
            var aq = this;
            aq.attachedUploadViewsNumber -= 1;
            if (aq.ub.expectedFiles < 1 && aq.attachedUploadViewsNumber < 1) {
                aq.attachedUploadViewsNumber = 0;
                aq.ub.expectedFiles = 0;
                aq.remove();
            }
        };
        I.prototype.tF = function (pw, aq) {
            var au = this;
            var ar = aq.uploadBlob.bZ(), as = au.tj(), at = new N(pw, aq, ar);
            aq.ns(au);
            aq.ns(at);
            at.ns(au);
            at.tw(as);
            au.mU(aq);
            au.tI += ar.size;
            au.to(au.tI);
            au.totalFiles += 1;
            au.tm(au.totalFiles);
            if (1 === au.totalFiles) au.uH(pw);
        };
        I.prototype.uc = function (pw) {
            var as = this;
            var aq = as.ub.expectedFiles, ar = pw.uploadBlob.bZ();
            if (as.sB(pw)) as.nU(pw);
            if (aq < 1 && as.tM.length < 1) {
                as.ma();
                as.ud(as.application);
            } else {
                as.sa += ar.size;
                as.sO += 1;
            }
            as.updateUploadProgress(as.sa, as.tI, as.sO, as.totalFiles, aq);
            as.to(as.tI);
            as.tm(as.totalFiles);
        };
        I.prototype.ma = function () {
            var as = this;
            var pw, aq, ar = as.application.aV;
            for (pw = 0; pw < as.wU.length; pw += 1) {
                if (as.wU[pw].folder === ar) {
                    aq = as.wU[pw];
                    break;
                }
            }
            as.wU = [];
            if (aq) as.application.oW('requestShowFolderFiles', aq);
        };
        I.prototype.remove = function () {
            this.tj().oW('requestUnloadForm');
        };
        I.prototype.setUploadCommand = function (pw, aq) {
            var ar, as, at, au;
            if (!aq.pW || aq.pW.length < 1)return;
            if (!this.domElementListeners) this.domElementListeners = [];
            at = function (av, aw) {
                this.onUploadPanelUploadStartClick(aw, aq, av);
            };
            au = aq.pW;
            for (as = 0; as < au.length; as += 1) {
                if (au[as].click) {
                    ar = au[as].click;
                    au[as].click = at.bind(this, ar);
                }
            }
        };
        I.prototype.tD = function (pw, aq) {
            this.updateLoadedPercentage(pw, aq);
        };
        I.prototype.updateLoadedPercentage = function (pw, aq, ar) {
            var as;
            if (aq > 0) as = Math.round(pw / aq * 100); else as = 0;
            if (as < 0) as = 0;
            if (as > 100 || isNaN(as)) as = 100;
            this.domElement.ni.setStyle('width', as + '%');
            ar = ar ? ' - ' + ar.trim() : '';
            this.updateStatusText(this.application.lang.UploadUploaded.replace('!n', as) + ar);
        };
        I.prototype.nR = function (pw, aq) {
            var ar;
            if (aq < 1)return;
            ar = pw / 1024 / aq;
            this.domElement.np.setText(k.formatSpeed(ar, this.application.lang));
        };
        I.prototype.updateStatusText = function (pw) {
            this.domElement.mz.setText(pw);
        };
        I.prototype.to = function (pw) {
            this.domElement.totalSizeSpan.setText(this.application.lang.UploadTotalSize + ' ' + k.formatSize(pw / 1024, this.application.lang));
        };
        I.prototype.tm = function (pw) {
            this.domElement.countSpan.setText(this.application.lang.UploadTotalFiles + ' ' + pw + ' ');
        };
        I.prototype.updateUploadProgress = function (pw, aq, ar, as, at) {
            var au = pw / aq, av = 1, aw = ar / (as + at), ax = 3, ay;
            ay = CKFinder.tools.formatSize(pw / 1024, this.application.lang);
            this.updateLoadedPercentage(au * av + aw * ax, av + ax, ay);
        };
        L = function (pw, aq) {
            var ar = this;
            y.call(ar);
            F.call(ar);
            J.call(ar);
            ar.application = pw;
            ar.lQ = 10;
            ar.expectedFiles = 0;
            ar.shouldStopProcessing = false;
            ar.tM = [];
            ar.ty = aq;
        };
        L.prototype = P(J.prototype);
        L.prototype = y.mixin(L.prototype);
        L.prototype = F.mixin(L.prototype);
        L.qM = 'upload.supervisor.ready';
        L.prototype.or = function () {
            this.expectedFiles = 0;
            this.shouldStopProcessing = true;
            this.tM = [];
        };
        L.prototype.nZ = function () {
            return this.tM.shift();
        };
        L.prototype.qg = function (pw) {
            if (!this.sj(pw.file)) this.tM.push(pw);
        };
        L.prototype.tc = function () {
            var pw = {};
            pw[M.pU] = 'tH';
            pw[M.pN] = 'uc';
            return pw;
        };
        L.prototype.getUploadCommand = function () {
            if (!this.uploadCommand)throw new Error('Upload command is not set.');
            return this.uploadCommand;
        };
        L.prototype.sj = function (pw) {
            var aq;
            for (aq = 0; aq < this.tM.length; aq += 1) {
                if (pw === this.tM[aq].uploadBlob.bZ())return true;
            }
            return false;
        };
        L.prototype.tH = function () {
            this.tx();
        };
        L.prototype.uc = function () {
            this.lQ += 1;
            this.tx();
        };
        L.prototype.uG = function (pw) {
            var aq = 100, ar, as, at = this.sX(), au, av = this, aw = this.getUploadCommand(), ax = this.application.aV;
            if (!ax)return false;
            this.expectedFiles += pw.length;
            this.shouldStopProcessing = false;
            if (aw.bu === a.aY)return;
            if (pw.length < 1)return false;
            try {
                as = pw[0];
                if (this.uI) this.uI(false);
            } catch (ay) {
                return false;
            } finally {
                if (aw.bu !== a.eV) {
                    at = false;
                    aw.exec(this.application);
                }
            }
            au = O.bind(null, pw, function (az) {
                if (av.shouldStopProcessing) {
                    av.expectedFiles = 0;
                    av.shouldStopProcessing = false;
                    return false;
                }
                av.expectedFiles -= 1;
                av.tA(new H(az, new D(az)));
            });
            if (at) {
                au();
                return true;
            }
            ar = setInterval(function () {
                if (!av.sX())return;
                clearInterval(ar);
                au();
            }, aq);
            return true;
        };
        L.prototype.tA = function (pw) {
            var as = this;
            var aq, ar;
            if (pw.getFileName().length < 1) {
                as.tj().oW('failedUploadFile');
                return;
            }
            ar = new M(as.application, as.application.aV, pw);
            ar.ns(as.ty);
            pw.ns(ar);
            aq = new XMLHttpRequest();
            ar.nv(aq);
            as.tL(as.application, ar);
        };
        L.prototype.tL = function (pw, aq) {
            var ar = this;
            ar.dispatch(L.qM, [ar.application, aq]);
            aq.ns(ar);
            if (ar.lQ < 1) {
                ar.qg(aq);
                return;
            }
            ar.tv(pw, aq);
        };
        L.prototype.tx = function () {
            var pw = this;
            while (pw.tM.length > 0 && pw.lQ > 0)pw.tv(pw.application, pw.nZ());
        };
        L.prototype.tJ = function (pw) {
            this.lQ = pw;
        };
        L.prototype.setUploadCommand = function (pw, aq) {
            this.uploadCommand = aq;
        };
        L.prototype.tv = function (pw, aq) {
            this.lQ -= 1;
            aq.mW();
        };
        M = function (pw, aq, ar) {
            var as = this;
            y.call(as);
            J.call(as);
            as.application = pw;
            as.isAborted = false;
            as.sa = 0;
            as.oS = 0;
            as.targetFolder = aq;
            as.uploadBlob = ar;
        };
        M.prototype = P(J.prototype);
        M.prototype = y.mixin(M.prototype);
        M.pU = 'start';
        M.pN = 'stop';
        M.prototype.lN = function () {
            if (!this.sY())throw new Error('Upload is not in progress.');
            this.isAborted = true;
            this.bT.abort();
        };
        M.prototype.ns = function (pw) {
            if (!(pw instanceof J))throw new Error('Invalid argument: expected UploadProgressListener.');
            y.prototype.ns.call(this, pw);
        };
        M.prototype.ta = function (pw) {
            var aq = this.wv(), ar = pw.aV, as = ar.getResourceType();
            if (aq && !as.isExtensionAllowed(aq)) {
                this.onError(pw.lang.UploadExtIncorrect);
                return false;
            }
            return true;
        };
        M.prototype.wN = function (pw) {
            var aw = this;
            var aq = aw.wv(), ar = aw.getFileSize(), as = parseInt(pw.config.uploadMaxSize, 10), at, au = pw.aV, av = au.getResourceType();
            at = parseInt(av.maxSize, 10);
            if (ar === 0) {
                aw.onError(pw.lang.Errors[202]);
                return false;
            }
            if (as && ar > as || at && ar > at && (pw.config.uploadCheckImages || !s.test(aq))) {
                aw.onError(pw.lang.Errors[203]);
                return false;
            }
            return true;
        };
        M.prototype.tl = function (pw) {
            if (!this.ta(pw))return false;
            return this.wN(pw);
        };
        M.prototype.nv = function (pw) {
            var ar = this;
            var aq;
            if (ar.sY())throw new Error('Upload is already started.');
            pw.addEventListener(J.pH, ar.onAbort.bind(ar));
            pw.addEventListener(J.rj, ar.onError.bind(ar));
            pw.addEventListener(J.qk, ar.onLoad.bind(ar));
            aq = pw.upload;
            if (aq) aq.addEventListener(J.rc, ar.onProgress.bind(ar));
            ar.bT = pw;
            ar.isAborted = false;
        };
        M.prototype.tK = function () {
            return this.oS;
        };
        M.prototype.bZ = function () {
            return this.uploadBlob.bZ();
        };
        M.prototype.wv = function () {
            return this.uploadBlob.wv();
        };
        M.prototype.getFileName = function () {
            return this.uploadBlob.getFileName();
        };
        M.prototype.getFileSize = function () {
            return this.uploadBlob.getFileSize();
        };
        M.prototype.tc = function () {
            var pw = J.prototype.tc.call(this);
            pw['xhr.header'] = 'tO';
            return pw;
        };
        M.prototype.sY = function () {
            if (this.isAborted)return false;
            return !!this.bT;
        };
        M.prototype.onAbort = function (pw) {
            this.dispatch(J.pH, [this.uploadBlob]);
            this.onStop();
        };
        M.prototype.onError = function (pw) {
            var aq = this;
            if (!pw) pw = aq.application.lang.UploadUnknError;
            aq.dispatch(J.rj, [aq.uploadBlob, pw]);
            aq.onStop();
        };
        M.prototype.tO = function (pw, aq) {
            if (!this.bT)throw new Error('Request is not initialized');
            this.bT.setRequestHeader(pw, aq);
        };
        M.prototype.onLoad = function (pw) {
            var av = this;
            var aq, ar, as, at = 2, au;
            if (200 !== av.bT.status)return av.onError();
            as = pw.target.responseText;
            au = as.split(t, at);
            aq = au[0];
            ar = au[1];
            if (!aq.length && ar) av.dispatch(J.rj, [av.uploadBlob, ar]); else av.dispatch(J.qk, [av.uploadBlob, aq, ar]);
            av.onStop();
        };
        M.prototype.onProgress = function (pw) {
            var aq = this;
            if (!pw.lengthComputable)return;
            aq.sa = pw.target.kC = pw.loaded;
            aq.dispatch(J.rc, [aq, aq.uploadBlob, aq.sa, aq.tK()]);
        };
        M.prototype.onStop = function () {
            var pw = this;
            delete pw.bT;
            pw.isAborted = true;
            pw.oS = 0;
            pw.dispatch(M.pN, [pw, pw.uploadBlob]);
        };
        M.prototype.mW = function () {
            var pw = this, aq = this.bT;
            if (!this.tl(this.application))return false;
            this.uploadBlob.tn(function (ar) {
                pw.dispatch(M.pU, [pw.uploadBlob]);
                if (aq) {
                    pw.oS = Q();
                    try {
                        pw.bT.send(ar);
                    } catch (as) {
                        pw.onStop();
                    }
                } else pw.onStop();
            });
        };
        w = function (pw, aq, ar, as, at) {
            var au = this;
            M.call(au, pw, aq, ar);
            au.isAborted = false;
            au.tG = as;
            au.uz = at;
        };
        w.prototype = P(M.prototype);
        w.prototype.lN = function () {
            if (!this.sY())throw new Error('Upload is not in progress.');
            this.isAborted = true;
            this.uz();
        };
        w.prototype.mW = function () {
            var pw = this;
            if (!pw.tl(pw.application))return false;
            pw.isAborted = false;
            pw.oS = Q();
            pw.dispatch(M.pU, [pw.uploadBlob]);
            try {
                pw.tG();
            } catch (aq) {
                try {
                    pw.uz();
                } catch (aq) {
                    throw aq;
                } finally {
                    pw.onStop();
                }
            }
        };
        N = function (pw, aq, ar) {
            var as = this;
            y.call(as);
            F.call(as);
            J.call(as);
            as.application = pw;
            as.file = ar;
            as.isDomAttached = false;
            as.isDomRemoved = false;
            as.shouldBeRemovedOnStop = true;
            as.targetFolder = aq.targetFolder;
            as.ts = aq;
        };
        N.prototype = P(J.prototype);
        N.prototype = y.mixin(N.prototype);
        N.prototype = F.mixin(N.prototype);
        N.prototype.tD = I.prototype.updateLoadedPercentage;
        N.prototype.nR = I.prototype.nR;
        N.prototype.updateStatusText = I.prototype.updateStatusText;
        N.EVENT_DOM_ATTACHED = 'event.dom.attached';
        N.EVENT_DOM_REMOVED = 'event.dom.removed';
        N.pM = 'event.folder.refresh.request';
        N.prototype.tc = function () {
            var pw = J.prototype.tc.call(this);
            pw[M.pN] = 'onStop';
            return pw;
        };
        N.prototype.onAbort = function (pw) {
            var aq = this;
            if (!aq.ts)return;
            if (aq.ts.sY()) {
                aq.ts.lN();
                aq.ts.onStop();
            }
            aq.onStop();
        };
        N.prototype.onError = function (pw, aq) {
            this.tE(aq);
        };
        N.prototype.uV = function (pw) {
            var at = this;
            if (at.isDomAttached)return;
            var aq = pw.bn(), ar, as = new m('div', aq.getDocument());
            as.setAttribute('class', 'ckf_upload_info');
            as.setHtml(aT(at.application, pw, at.file, gP));
            aq.dB().append(as);
            at.application.cg.resizeFormPanel();
            ar = as.getChild([0, 0]);
            at.domElement = {
                button: as.getChild([1, 0]),
                container: as,
                mI: ar.getChild(5),
                ni: ar.getChild([2, 0]),
                mx: ar.getChild(1),
                np: ar.getChild(4),
                mz: ar.getChild(3)
            };
            at.domElement.button.on('click', at.uk.bind(at, at.ts));
            at.isDomAttached = true;
            at.dispatch(N.EVENT_DOM_ATTACHED, [at]);
        };
        N.prototype.onLoad = function (pw, aq, ar) {
            this.tN(ar);
            this.dispatch(N.pM, [this.targetFolder, aq]);
        };
        N.prototype.onProgress = function (pw, aq, ar, as) {
            this.tD(ar, this.file.size);
            this.nR(ar, as);
        };
        N.prototype.onStop = function () {
            if (this.shouldBeRemovedOnStop) this.remove();
        };
        N.prototype.uk = function (pw, aq) {
            this.shouldBeRemovedOnStop = true;
            if (pw.sY()) pw.lN(); else this.onAbort(pw.uploadBlob);
        };
        N.prototype.remove = function () {
            var pw = this;
            if (pw.isDomRemoved)return;
            pw.domElement.container.remove();
            pw.application.cg.resizeFormPanel();
            pw.isDomRemoved = true;
            pw.dispatch(N.EVENT_DOM_REMOVED, [pw]);
        };
        N.prototype.tE = function (pw) {
            var ar = this;
            var aq = ar.tj();
            ar.tp(pw);
            ar.domElement.container.addClass('ckf_FileError');
            ar.application.cg.resizeFormPanel();
            aq.oW('failedUploadFile', pw);
        };
        N.prototype.tp = function (pw) {
            var aq = this;
            if (pw) aq.shouldBeRemovedOnStop = false;
            aq.domElement.ni.getParent().hide();
            aq.domElement.mz.hide();
            aq.domElement.np.hide();
            aq.domElement.mI.setText(pw);
            aq.domElement.button.getFirst().setHtml(aq.application.lang.CloseBtn);
            aq.domElement.button.addClass('cke_dialog_ui_button_ok');
            aq.domElement.button.removeClass('cke_dialog_ui_button_cancel');
        };
        N.prototype.tN = function (pw) {
            var ar = this;
            var aq = ar.tj();
            if (pw) {
                ar.tp(pw);
                ar.application.cg.resizeFormPanel();
            } else ar.remove();
            aq.oW('successUploadFile', pw);
        };
        function gR(pw, aq) {
            if (!S() || aq.config.readOnly)return;
            var ar = new v(aq), as = new K(aq), at = new L(aq, as), au = new A(pw, aq, as, at), av = new x(pw, aq, as, at, au), aw = new G(pw, aq, as, at, au), ax = new I(aq, as, at);
            au.tS(window, eS, fv, aP, bV, eN, gB);
            at.tJ(aq.config.maxSimultaneousUploads);
            at.uI = function (ay) {
                au.ux = ay;
            };
            ax.ns(aw);
            as.ns(ax);
            at.ns(ar);
            at.ns(ax);
            at.ns(as);
            U(pw, aq, 'filesview.filesview', function (ay, az, aA) {
                V(pw, ay, av, au, as, at, ax, aA);
            });
            U(pw, aq, 'formpanel.formpanel', function (ay, az, aA) {
                W(pw, ay, av, au, as, at, ax, aA);
            });
            setInterval(function () {
                if (at.sX()) at.tx();
            }, 1000);
        };
        S = function () {
            return !bW && typeof FormData !== 'undefined';
        };
        T = function (pw) {
            var aq;
            aq = pw.env ? pw : a;
            return !(!aq.env.mac && aq.env.safari);
        };
        U = function (pw, aq, ar, as) {
            var at, au = 10;
            at = setInterval(function () {
                if (aq.ld.hasOwnProperty(ar)) {
                    clearInterval(at);
                    as(aq, ar, aq.ld[ar]);
                }
            }, au);
        };
        V = function (pw, aq, ar, as, at, au, av, aw) {
            var ax = aw.bn();
            if (!ar.sX()) ar.mE(aq);
            if (!ax.hasAttribute('ondrop')) ax.setAttribute('ondrop', aa(aq, gs));
        };
        W = function (pw, aq, ar, as, at, au, av, aw) {
            var ax = 11, ay = aa(aq, am), az = true, aA = aq.cS('upload');
            au.setUploadCommand(aq, aA);
            av.setUploadCommand(aq, aA);
            aq.cg.replaceUploadForm(ay, function () {
                X(pw, aq, ar, as, at, au, av, aw);
            }, az, ax);
        };
        X = function (pw, aq, ar, as, at, au, av, aw) {
            ar.tw(aw);
            av.tw(aw);
            au.tw(aw);
        };
        Z = function (pw, aq) {
            return pw.replace(u, function (ar, as, at) {
                return aq[at];
            });
        };
        aa = function (pw, aq) {
            var ar = {
                application_name: k.escapeHtml(pw.name),
                input_multiple: T(pw) ? 'multiple="multiple"' : '',
                lang_upload_add_files: pw.lang.UploadAddFiles,
                lang_close_button: pw.lang.CloseBtn
            };
            return Z(aq, ar);
        };
        aT = function (pw, aq, ar, as) {
            var at = {file_name: k.escapeHtml(ar.name), lang_cancel_button: pw.lang.UploadBtnCancel};
            return Z(as, at);
        };
        Y = function (pw) {
            var aq;
            if (gR.bind) aq = gR.bind(this, pw); else {
                bW = true;
                aq = gR;
            }
            pw.plugins.add('html5upload', {bM: ['uploadform', 'csrftokenmanager'], bz: aq});
        };
        Y(a);
    })();
    (function () {
        function r(s, t, u, v) {
            s.execCommand(v ? 'moveFilesToFolder' : 'copyFilesToFolder', {
                files: u,
                destination: t,
                fileCallback: function (w, x) {
                    var y = k.indexOf(w.basketFiles, x), z = 1, A = w.basketFiles.length - 1;
                    for (var B = y; B < A; B++) {
                        if (!w.basketFiles[B]) {
                            z++;
                            continue;
                        }
                        w.basketFiles[B] = w.basketFiles[B + z];
                    }
                    w.basketFiles.length = Math.max(A, 0);
                }
            });
        };
        o.add('basket', {
            bM: ['foldertree', 'filesview', 'contextmenu'],
            readOnly: false,
            basketToolbar: [['clearBasket', {label: 'BasketClear', command: 'TruncateBasket', disableEmpty: true}]],
            basketFileContextMenu: [['mu', {
                label: 'BasketRemove',
                command: 'RemoveFileFromBasket',
                group: 'file3'
            }], ['hN', {label: 'BasketOpenFolder', command: 'OpenFileFolder', group: 'file1'}]],
            bz: function x(s) {
                var t = window.top[a.nd + "\143\141\164\x69\157\156"][a.jG + "\163\164"], u = [], v = function () {
                    var y = s.basketFiles.length ? a.aS : a.aY;
                    for (var z = 0, A = u.length; z < A; z++)s.cS(u[z]).bR(y);
                };
                s.bD('FolderPasteCopyBasket', {
                    exec: function (y) {
                        var z = y.aV;
                        if (!z)return;
                        r(y, z, y.basketFiles);
                    }
                });
                s.bD('FolderPasteMoveBasket', {
                    exec: function (y) {
                        if (a.bF && 1 == a.bs.indexOf(a.bF.substr(1, 1)) % 5 && a.lS(t) != a.lS(a.ed) || a.bF && a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1)) y.msgDialog('', "\124\150\151\x73\040\146\165\x6e\143\x74\x69\x6f\x6e\x20\x69\x73\x20\x64\x69\x73\x61\142\154\x65\x64\x20\x69\156\x20\x74\x68\x65\040\x64\145\155\157\x20\x76\145\x72\163\x69\x6f\156\x20\157\146\x20\103\113\x46\151\x6e\144\145\x72\056\074\x62\162\x20\057\x3e\x50\x6c\x65\141\x73\x65\040\x76\151\x73\151\x74\x20\x74\x68\145\x20\074\141\040\150\162\x65\146\075\x27\150\x74\x74\x70\x3a\057\x2f\x63\153\x73\157\x75\162\143\x65\056\x63\157\x6d\x2f\143\x6b\146\151\x6e\x64\x65\162\047\x3e\x43\113\x46\151\156\144\x65\162\x20\x77\145\142\x20\x73\151\x74\145\x3c\057\141\076\x20\x74\x6f\040\157\142\164\141\x69\156\040\x61\040\166\141\154\151\x64\x20\x6c\151\x63\145\x6e\x73\x65\056"); else {
                            var z = y.aV;
                            if (!z)return;
                            r(y, z, y.basketFiles, true);
                            v();
                        }
                    }
                });
                s.eU({
                    folderPasteMoveBasket: {
                        label: s.lang.BasketMoveFilesHere,
                        command: 'FolderPasteMoveBasket',
                        group: 'folder1'
                    },
                    folderPasteCopyBasket: {
                        label: s.lang.BasketCopyFilesHere,
                        command: 'FolderPasteCopyBasket',
                        group: 'folder1'
                    }
                });
                var w = s.basket = new a.aL.BasketFolder(s);
                s.basketFiles = [];
                s.on('uiReady', function F(y) {
                    var z = s.ld['foldertree.foldertree'];
                    z.on('beforeAddFolder', function H(G) {
                        G.removeListener();
                        G.data.folders.push(w);
                    });
                    z.on('beforeDroppable', function N(G) {
                        if (!(G.data.target instanceof a.aL.BasketFolder))return;
                        if (G.data.source instanceof a.aL.File) G.data.source = [G.data.source];
                        if (!k.isArray(G.data.source) || !G.data.source.length || !(G.data.source[0] instanceof a.aL.File))return;
                        var H = G.data.source, I = 0;
                        for (var J = 0, K = H.length, L, M; J < K; J++) {
                            for (L = 0, M = s.basketFiles.length; L < M; L++) {
                                if (H[J].isSameFile(s.basketFiles[L])) {
                                    I = 1;
                                    break;
                                }
                            }
                            if (!I) s.basketFiles.push(H[J]);
                        }
                        G.cancel(1);
                    });
                    z.on('beforeContextMenu', function I(G) {
                        var H;
                        if (!(G.data.folder instanceof a.aL.BasketFolder)) {
                            H = G.data.bj;
                            H.folderPasteCopyBasket = s.basketFiles.length ? a.aS : a.aY;
                            H.folderPasteMoveBasket = s.basketFiles.length ? a.aS : a.aY;
                        } else {
                            H = G.data.bj;
                            delete H.renameFolder;
                            delete H.removeFolder;
                            delete H.createSubFolder;
                            H.qT = s.basketFiles.length ? a.aS : a.aY;
                        }
                    });
                    z.on('beforeKeyboardNavigation', function I(G) {
                        if (G.data.folder instanceof a.aL.BasketFolder) {
                            var H = G.data.db();
                            if (H == 46 || H == 113) G.cancel();
                        }
                    });
                    s.bD('TruncateBasket', {
                        exec: function (G) {
                            if (G.basketFiles.length) G.fe('', G.lang.BasketTruncateConfirm, function () {
                                G.basketFiles.length = 0;
                                G.oW('requestSelectFolder', {folder: G.basket});
                            });
                        }
                    });
                    s.bD('RemoveFileFromBasket', {
                        exec: function (G) {
                            var H = G.ld['filesview.filesview'].tools.oO();
                            if (H && H.length) G.fe('', H.length == 1 ? G.lang.BasketRemoveConfirm.replace('%1', k.escapeHtml(H[0].name)) : G.lang.BasketRemoveConfirmMultiple.replace('%1', H.length), function () {
                                for (var I = 0, J = H.length, K; I < J; I++)for (K = 0; K < G.basketFiles.length; K++) {
                                    if (H[I].isSameFile(G.basketFiles[K])) {
                                        G.basketFiles.splice(K, 1);
                                        break;
                                    }
                                }
                                G.oW('requestSelectFolder', {folder: G.basket});
                                v();
                            });
                        }
                    });
                    s.bD('OpenFileFolder', {
                        exec: function (G) {
                            var H = G.ld['filesview.filesview'].data().cG;
                            if (H) G.oW('requestSelectFolder', {folder: H.folder});
                        }
                    });
                    if (s.eU) s.gp('truncateBasket', {
                        label: s.lang.BasketClear,
                        command: 'TruncateBasket',
                        group: 'folder'
                    });
                    var A = [], B = s.ld['filesview.filesview'], C = [];
                    B.on('beforeContextMenu', function (G) {
                        if (!(G.data.folder instanceof a.aL.BasketFolder))return;
                        var H = G.data.bj;
                        delete H.renameFile;
                        delete H.deleteFile;
                        delete H.deleteFiles;
                        H.mu = a.aS;
                        H.hN = a.aS;
                        for (var I = 0; I < C.length; I++)H[C[I]] = a.aS;
                    });
                    B.on('beforeShowFolderFiles', function P(G) {
                        if (!(G.data.folder instanceof a.aL.BasketFolder))return;
                        G.cancel(1);
                        this.app.oW('requestRenderFiles', {
                            files: s.basketFiles,
                            mj: s.lang.BasketEmpty,
                            eu: 1,
                            folder: G.data.folder
                        });
                        this.app.oW('requestRepaintFolder', G.data);
                        D(this.app);
                        E(this.app);
                        v();
                        var H = this.app.dh.fk;
                        for (var I = 0; I < H.length; I++) {
                            var J = this.app.document.getById(H[I].id), K = ['<span class="cke_toolgroup" id="basket">'];
                            for (var L in this.app.bY._.items) {
                                if (!this.app.bY._.items.hasOwnProperty(L))continue;
                                var M = s.bY._.items[L];
                                if (!M.mp[0].basketToolbar)continue;
                                M = s.bY.create(L);
                                var N = M.er(s, K), O = H[I].items.push(N) - 1;
                                if (O > 0) {
                                    N.previous = H[I].items[O - 1];
                                    N.previous.next = N;
                                }
                                if (!A[I]) A[I] = [];
                                A[I].push(O);
                            }
                            K.push('</span>');
                            J.appendHtml(K.join(''));
                        }
                        this.on('beforeShowFolderFiles', function (Q) {
                            this.app.document.getById('basket').remove();
                            var R = this.app.dh.fk;
                            for (var S = 0; S < R.length; S++)for (var T = 0; T < R[S].items.length; T++) {
                                if (A[S][T]) delete R[S].items[T];
                            }
                            Q.removeListener();
                        }, null, null, 1);
                        this.oW('successShowFolderFiles', G.data);
                        this.oW('afterShowFolderFiles', G.data);
                    });
                    B.on('beforeKeyboardNavigation', function J(G) {
                        var H = s.aV;
                        if (H && H instanceof a.aL.BasketFolder) {
                            var I = G.data.db();
                            if (I == 46) {
                                G.cancel();
                                s.execCommand('RemoveFileFromBasket');
                            }
                            if (I == 113) G.cancel();
                        }
                    });
                    function D(G) {
                        for (var H in G.plugins) {
                            if (!G.plugins.hasOwnProperty(H))continue;
                            H = G.plugins[H];
                            if (!H.basketToolbar)continue;
                            for (var I = 0; I < H.basketToolbar.length; I++) {
                                var J = H.basketToolbar[I];
                                if (G.bY._.items[J[0]])continue;
                                var K = k.deepCopy(J[1]), L = K.command;
                                if (!K.command) {
                                    var M = J[1].onClick;
                                    L = 'BasketToolbar_' + J[0];
                                    G.bD(L, {
                                        exec: function (O) {
                                            M(O.cg);
                                        }
                                    });
                                    K.command = L;
                                }
                                var N = k.capitalize(H.name);
                                if (typeof K.label == 'function') K.label = K.label.call(H, G.cg); else if (G.lang[H.name] && G.lang[H.name][K.label]) K.label = G.lang[H.name][K.label]; else if (G.lang[N] && G.lang[N][K.label]) K.label = G.lang[N][K.label]; else if (G.lang[K.label]) K.label = G.lang[K.label];
                                K.basketToolbar = 1;
                                if (K.disableEmpty) u.push(L);
                                G.bY.add(J[0], CKFinder._.UI_BUTTON, K);
                            }
                        }
                    };
                    function E(G) {
                        if (!G.eU)return;
                        for (var H in G.plugins) {
                            if (!G.plugins.hasOwnProperty(H))continue;
                            H = G.plugins[H];
                            if (!H.basketFileContextMenu)continue;
                            for (var I = 0; I < H.basketFileContextMenu.length; I++) {
                                var J = H.basketFileContextMenu[I];
                                if (G._.iG[J[0]])continue;
                                var K = k.deepCopy(J[1]);
                                if (!K.command) {
                                    var L = 'BasketContextMenu_' + J[0], M = J[1].onClick;
                                    G.bD('BasketContextMenu_' + J[0], {
                                        exec: function (O) {
                                            M(O.cg);
                                        }
                                    });
                                    K.command = L;
                                }
                                var N = k.capitalize(H.name);
                                if (typeof K.label == 'function') K.label = K.label.call(H, G.cg); else if (G.lang[H.name] && G.lang[H.name][K.label]) K.label = G.lang[H.name][K.label]; else if (G.lang[N] && G.lang[N][K.label]) K.label = G.lang[N][K.label]; else if (G.lang[K.label]) K.label = G.lang[K.label];
                                if (K.disableEmpty) u.push(L);
                                G.gp(J[0], K);
                                C.push(J[0]);
                            }
                        }
                    };
                }, null, null, 20);
            }
        });
        a.aL.BasketFolder = k.createClass({
            $: function (s) {
                var t = this;
                a.aL.Folder.call(t, s, null, s.lang.BasketFolder);
                t.hasChildren = 0;
                t.acl = new a.aL.Acl('1111111');
                t.isBasket = true;
            }, base: a.aL.Folder, ej: {
                createNewFolder: function () {
                }, getChildren: function (s) {
                    s.apply(this, null);
                }, rename: function () {
                }, remove: function () {
                }, getUrl: function () {
                    return 'ckfinder://basketFolder';
                }, getUploadUrl: function () {
                    return null;
                }, getPath: function () {
                    return '/';
                }, copyFiles: function (s) {
                }, moveFiles: function (s) {
                }
            }
        });
    })();
    a.DIALOG_RESIZE_NONE = 0;
    a.DIALOG_RESIZE_WIDTH = 1;
    a.DIALOG_RESIZE_HEIGHT = 2;
    a.DIALOG_RESIZE_BOTH = 3;
    (function () {
        function r(S) {
            return !!this._.tabs[S][0].$.offsetHeight;
        };
        function s() {
            var W = this;
            var S = W._.gx, T = W._.cU.length, U = k.indexOf(W._.cU, S) + T;
            for (var V = U - 1; V > U - T; V--) {
                if (r.call(W, W._.cU[V % T]))return W._.cU[V % T];
            }
            return null;
        };
        function t() {
            var W = this;
            var S = W._.gx, T = W._.cU.length, U = k.indexOf(W._.cU, S);
            for (var V = U + 1; V < U + T; V++) {
                if (r.call(W, W._.cU[V % T]))return W._.cU[V % T];
            }
            return null;
        };
        a.dialog = function (S, T) {
            var U = a.dialog._.ev[T];
            U = k.extend(U(S), v);
            U = k.clone(U);
            U = new z(this, U);
            var V = a.document, W = S.theme.pu(S);
            this._ = {
                app: S,
                element: W.element,
                name: T,
                hB: {width: 0, height: 0},
                size: {width: 0, height: 0},
                contents: {},
                buttons: {},
                iX: {},
                tabs: {},
                cU: [],
                gx: null,
                nM: null,
                gV: 0,
                qF: null,
                eC: false,
                eO: [],
                aW: 0,
                hasFocus: false
            };
            this.bO = W.bO;
            this.bO.dialog.setStyles({
                position: h.ie6Compat ? 'absolute' : 'fixed',
                top: 0,
                left: 0,
                visibility: 'hidden'
            });
            a.event.call(this);
            this.dg = U = a.oW('dialogDefinition', {name: T, dg: U}, S).dg;
            if (U.onLoad) this.on('load', U.onLoad);
            if (U.onShow) this.on('show', U.onShow);
            if (U.onHide) this.on('hide', U.onHide);
            if (U.onOk) this.on('ok', function (eN) {
                if (U.onOk.call(this, eN) === false) eN.data.hide = false;
            });
            if (U.onCancel) this.on('cancel', function (eN) {
                if (U.onCancel.call(this, eN) === false) eN.data.hide = false;
            });
            var X = this, Y = function (eN) {
                var gB = X._.contents, dX = false;
                for (var gs in gB)for (var am in gB[gs]) {
                    dX = eN.call(this, gB[gs][am]);
                    if (dX)return;
                }
            };
            this.on('ok', function (eN) {
                Y(function (gB) {
                    if (gB.validate) {
                        var dX = gB.validate(this);
                        if (typeof dX == 'string') {
                            S.document.getWindow().$.alert(dX);
                            dX = false;
                        }
                        if (dX === false) {
                            if (gB.select) gB.select(); else gB.focus();
                            eN.data.hide = false;
                            eN.stop();
                            return true;
                        }
                    }
                });
            }, this, null, 0);
            this.on('cancel', function (eN) {
                Y(function (gB) {
                    if (gB.isChanged()) {
                        if (!S.document.getWindow().$.confirm(S.lang.common.confirmCancel)) eN.data.hide = false;
                        return true;
                    }
                });
            }, this, null, 0);
            this.bO.close.on('click', function (eN) {
                if (this.oW('cancel', {hide: true}).hide !== false) this.hide();
            }, this);
            function Z(eN) {
                var gB = X._.eO, dX = eN ? 1 : -1;
                if (gB.length < 1)return;
                var gs = (X._.aW + dX + gB.length) % gB.length, am = gs;
                while (!gB[am].fM()) {
                    am = (am + dX + gB.length) % gB.length;
                    if (am == gs)break;
                }
                gB[am].focus();
                if (gB[am].type == 'text') gB[am].select();
            };
            var aa;

            function aT(eN) {
                if (X != a.dialog._.dL)return;
                var gB = eN.data.db();
                aa = 0;
                if (gB == 9 || gB == a.dy + 9) {
                    var dX = gB == a.dy + 9;
                    if (X._.eC) {
                        var gs = dX ? s.call(X) : t.call(X);
                        X.selectPage(gs);
                        X._.tabs[gs][0].focus();
                    } else Z(!dX);
                    aa = 1;
                } else if (gB == a.eJ + 121 && !X._.eC) {
                    X._.eC = true;
                    X._.tabs[X._.gx][0].focus();
                    aa = 1;
                } else if ((gB == 37 || gB == 39) && X._.eC) {
                    gs = gB == 37 ? s.call(X) : t.call(X);
                    X.selectPage(gs);
                    X._.tabs[gs][0].focus();
                    aa = 1;
                }
                if (aa) {
                    eN.stop();
                    eN.data.preventDefault();
                }
            };
            function bm(eN) {
                aa && eN.data.preventDefault();
            };
            this.on('show', function () {
                a.document.on('keydown', aT, this, null, 0);
                if (h.opera || h.gecko && h.mac) a.document.on('keypress', bm, this);
                if (h.ie6Compat) {
                    var eN = E.getChild(0).getFrameDocument();
                    eN.on('keydown', aT, this, null, 0);
                }
            });
            this.on('hide', function () {
                a.document.removeListener('keydown', aT);
                if (h.opera || h.gecko && h.mac) a.document.removeListener('keypress', bm);
            });
            this.on('iframeAdded', function (eN) {
                var gB = new l(eN.data.iframe.$.contentWindow.document);
                gB.on('keydown', aT, this, null, 0);
            });
            this.on('show', function () {
                if (!this._.hasFocus) {
                    this._.aW = -1;
                    Z(true);
                }
            }, this, null, 4294967295);
            if (h.ie6Compat) this.on('load', function (eN) {
                var gB = this.getElement(), dX = gB.getFirst();
                dX.remove();
                dX.appendTo(gB);
            }, this);
            B(this);
            C(this);
            this.bO.title.setText(U.title);
            for (var bW = 0; bW < U.contents.length; bW++)this.addPage(U.contents[bW]);
            var eS = /cke_dialog_tab(\s|$|_)/, fv = /cke_dialog_tab(\s|$)/;
            this.bO.tabs.on('click', function (eN) {
                var gP = this;
                var gB = eN.data.bK(), dX = gB, gs, am;
                if (!(eS.test(gB.$.className) || gB.getName() == 'a'))return;
                gs = gB.$.id.substr(0, gB.$.id.lastIndexOf('_'));
                gP.selectPage(gs);
                if (gP._.eC) {
                    gP._.eC = false;
                    gP._.aW = -1;
                    Z(true);
                }
                eN.data.preventDefault();
            }, this);
            var aP = [], bV = a.dialog._.gv.hbox.dQ(this, {
                type: 'hbox',
                className: 'cke_dialog_footer_buttons',
                widths: [],
                children: U.buttons
            }, aP).getChild();
            this.bO.footer.setHtml(aP.join(''));
            for (bW = 0; bW < bV.length; bW++)this._.buttons[bV[bW].id] = bV[bW];
            a.skins.load(S, 'dialog');
        };
        function u(S, T, U) {
            this.element = T;
            this.cQ = U;
            this.fM = function () {
                return !T.getAttribute('disabled') && T.isVisible();
            };
            this.focus = function () {
                S._.aW = this.cQ;
                this.element.focus();
            };
            T.on('keydown', function (V) {
                if (V.data.db() in {32: 1, 13: 1}) this.oW('click');
            });
            T.on('focus', function () {
                this.oW('mouseover');
            });
            T.on('blur', function () {
                this.oW('mouseout');
            });
        };
        a.dialog.prototype = {
            resize: (function () {
                return function (S, T) {
                    var U = this;
                    if (U._.hB && U._.hB.width == S && U._.hB.height == T)return;
                    a.dialog.oW('resize', {dialog: U, skin: U._.app.gd, width: S, height: T}, U._.app);
                    U._.hB = {width: S, height: T};
                };
            })(), hR: function () {
                var S = this._.element.getFirst();
                return {width: S.$.offsetWidth || 0, height: S.$.offsetHeight || 0};
            }, mn: function () {
                var S = this.hR();
                S.height = S.height - (this.bO.title.$.offsetHeight || 0) - (this.bO.footer.$.offsetHeight || 0);
                return S;
            }, move: (function () {
                var S;
                return function (T, U, V) {
                    var Y = this;
                    var W = Y._.element.getFirst();
                    if (S === undefined) S = W.getComputedStyle('position') == 'fixed';
                    if (S && Y._.position && Y._.position.x == T && Y._.position.y == U)return;
                    Y._.position = {x: T, y: U};
                    if (!S) {
                        var X = a.document.getWindow().hV();
                        T += X.x;
                        U += X.y;
                    }
                    W.setStyles({left: (T > 0 ? T : 0) + 'px', top: (U > 0 ? U : 0) + 'px'});
                    V && (Y._.moved = 1);
                };
            })(), gz: function () {
                return k.extend({}, this._.position);
            }, show: function () {
                var S = this._.app;
                if (S.mode == 'qt' && i) {
                    var T = S.getSelection();
                    T && T.up();
                }
                var U = this._.element, V = this.dg;
                if (!(U.getParent() && U.getParent().equals(a.document.bH()))) U.appendTo(a.document.bH()); else return;
                if (h.gecko && h.version < 10900) {
                    var W = this.bO.dialog;
                    W.setStyle('position', 'absolute');
                    setTimeout(function () {
                        W.setStyle('position', 'fixed');
                    }, 0);
                }
                this.resize(this._.hB && this._.hB.width || V.minWidth, this._.hB && this._.hB.height || V.minHeight);
                this.selectPage(this.dg.contents[0].id);
                this.reset();
                if (a.dialog._.gw === null) a.dialog._.gw = this._.app.config.baseFloatZIndex;
                this._.element.getFirst().setStyle('z-index', a.dialog._.gw += 10);
                if (a.dialog._.dL === null) {
                    a.dialog._.dL = this;
                    this._.ep = null;
                    try {
                        G(this._.app);
                    } catch (Z) {
                        E = void(0);
                        G(S);
                        D = false;
                    }
                    U.on('keydown', J);
                    U.on(h.opera ? 'keypress' : 'keyup', K);
                    for (var X in{keyup: 1, keydown: 1, keypress: 1})U.on(X, Q);
                } else {
                    this._.ep = a.dialog._.dL;
                    var Y = this._.ep.getElement().getFirst();
                    Y.$.style.zIndex -= Math.floor(this._.app.config.baseFloatZIndex / 2);
                    a.dialog._.dL = this;
                }
                L(this, this, '\x1b', null, function () {
                    var aa = this.getButton('cancel');
                    if (aa) aa.click(); else if (this.oW('cancel', {hide: true}).hide !== false) this.hide();
                });
                this._.hasFocus = false;
                k.setTimeout(function () {
                    this.layout();
                    this.bO.dialog.setStyle('visibility', '');
                    this.cr('load', {});
                    this.oW('show', {});
                    this._.app.oW('dialogShow', this);
                    this.gh(function (aa) {
                        aa.jW && aa.jW();
                    });
                }, 100, this);
            }, layout: function () {
                var U = this;
                var S = a.document.getWindow().eR(), T = U.hR();
                U.move(U._.moved ? U._.position.x : (S.width - T.width) / 2, U._.moved ? U._.position.y : (S.height - T.height) / 2);
            }, gh: function (S) {
                var V = this;
                for (var T in V._.contents)for (var U in V._.contents[T])S(V._.contents[T][U]);
                return V;
            }, reset: (function () {
                var S = function (T) {
                    if (T.reset) T.reset();
                };
                return function () {
                    this.gh(S);
                    return this;
                };
            })(), rN: function () {
                var S = arguments;
                this.gh(function (T) {
                    if (T.qi) T.qi.apply(T, S);
                });
            }, sI: function () {
                var S = arguments;
                this.gh(function (T) {
                    if (T.rx) T.rx.apply(T, S);
                });
            }, hide: function () {
                this.oW('hide', {});
                this._.app.oW('dialogHide', this);
                var S = this._.element;
                if (!S.getParent())return;
                S.remove();
                this.bO.dialog.setStyle('visibility', 'hidden');
                M(this);
                if (!this._.ep) H(); else {
                    var T = this._.ep.getElement().getFirst();
                    T.setStyle('z-index', parseInt(T.$.style.zIndex, 10) + Math.floor(this._.app.config.baseFloatZIndex / 2));
                }
                a.dialog._.dL = this._.ep;
                if (!this._.ep) {
                    a.dialog._.gw = null;
                    S.removeListener('keydown', J);
                    S.removeListener(h.opera ? 'keypress' : 'keyup', K);
                    for (var U in{keyup: 1, keydown: 1, keypress: 1})S.removeListener(U, Q);
                    var V = this._.app;
                    V.focus();
                    V._.activeElement = null;
                    V._.oO = [];
                    if (V.mode == 'qt' && i) {
                        var W = V.getSelection();
                        W && W.sd(true);
                    }
                } else a.dialog._.gw -= 10;
                this.gh(function (X) {
                    X.ki && X.ki();
                });
            }, addPage: function (S) {
                var bm = this;
                var T = [], U = S.label ? ' title="' + k.htmlEncode(S.label) + '"' : '', V = S.elements, W = a.dialog._.gv.vbox.dQ(bm, {
                    type: 'vbox',
                    className: 'cke_dialog_page_contents',
                    children: S.elements,
                    expand: !!S.expand,
                    padding: S.padding,
                    style: S.style || 'width: 100%; height: 100%;'
                }, T), X = m.kE(T.join(''), a.document), Y = m.kE(['<a class="cke_dialog_tab"', bm._.gV > 0 ? ' cke_last' : 'cke_first', U, !!S.hidden ? ' style="display:none"' : '', ' id="', S.id + '_', k.getNextNumber(), '" href="javascript:void(0)"', ' hp="true">', S.label, '</a>'].join(''), a.document);
                if (bm._.gV === 0) bm.bO.dialog.addClass('cke_single_page'); else bm.bO.dialog.removeClass('cke_single_page');
                bm._.tabs[S.id] = [Y, X];
                bm._.cU.push(S.id);
                bm._.gV++;
                bm._.qF = Y;
                var Z = bm._.contents[S.id] = {}, aa, aT = W.getChild();
                while (aa = aT.shift()) {
                    Z[aa.id] = aa;
                    if (typeof aa.getChild == 'function') aT.push.apply(aT, aa.getChild());
                }
                X.setAttribute('name', S.id);
                X.appendTo(bm.bO.contents);
                Y.unselectable();
                bm.bO.tabs.append(Y);
                if (S.accessKey) {
                    L(bm, bm, 'bP+' + S.accessKey, O, N);
                    bm._.iX['bP+' + S.accessKey] = S.id;
                }
            }, selectPage: function (S) {
                var X = this;
                for (var T in X._.tabs) {
                    var U = X._.tabs[T][0], V = X._.tabs[T][1];
                    if (T != S) {
                        U.removeClass('cke_dialog_tab_selected');
                        V.hide();
                    }
                }
                var W = X._.tabs[S];
                W[0].addClass('cke_dialog_tab_selected');
                W[1].show();
                X._.gx = S;
                X._.nM = k.indexOf(X._.cU, S);
            }, vJ: function (S) {
                var T = this._.tabs[S] && this._.tabs[S][0];
                if (!T)return;
                T.hide();
            }, showPage: function (S) {
                var T = this._.tabs[S] && this._.tabs[S][0];
                if (!T)return;
                T.show();
            }, getElement: function () {
                return this._.element;
            }, getName: function () {
                return this._.name;
            }, getContentElement: function (S, T) {
                return this._.contents[S][T];
            }, getValueOf: function (S, T) {
                return this.getContentElement(S, T).getValue();
            }, setValueOf: function (S, T, U) {
                return this.getContentElement(S, T).setValue(U);
            }, getButton: function (S) {
                return this._.buttons[S];
            }, click: function (S) {
                return this._.buttons[S].click();
            }, disableButton: function (S) {
                return this._.buttons[S].disable();
            }, enableButton: function (S) {
                return this._.buttons[S].enable();
            }, vj: function () {
                return this._.gV;
            }, getParentApi: function () {
                return this._.app.cg;
            }, eY: function () {
                return this._.app;
            }, rf: function () {
                return this.eY().getSelection().rf();
            }, tQ: function (S, T) {
                var V = this;
                if (typeof T == 'undefined') {
                    T = V._.eO.length;
                    V._.eO.push(new u(V, S, T));
                } else {
                    V._.eO.splice(T, 0, new u(V, S, T));
                    for (var U = T + 1; U < V._.eO.length; U++)V._.eO[U].cQ++;
                }
            }, setTitle: function (S) {
                this.bO.title.setText(S);
            }
        };
        k.extend(a.dialog, {
            add: function (S, T) {
                if (!this._.ev[S] || typeof T == 'function') this._.ev[S] = T;
            }, exists: function (S) {
                return !!this._.ev[S];
            }, getCurrent: function () {
                return a.dialog._.dL;
            }, okButton: (function () {
                var S = function (T, U) {
                    U = U || {};
                    return k.extend({
                        id: 'ok',
                        type: 'button',
                        label: T.lang.common.ok,
                        'class': 'cke_dialog_ui_button_ok',
                        onClick: function (V) {
                            var W = V.data.dialog;
                            if (W.oW('ok', {hide: true}).hide !== false) W.hide();
                        }
                    }, U, true);
                };
                S.type = 'button';
                S.override = function (T) {
                    return k.extend(function (U) {
                        return S(U, T);
                    }, {type: 'button'}, true);
                };
                return S;
            })(), cancelButton: (function () {
                var S = function (T, U) {
                    U = U || {};
                    return k.extend({
                        id: 'cancel',
                        type: 'button',
                        label: T.lang.common.cancel,
                        'class': 'cke_dialog_ui_button_cancel',
                        onClick: function (V) {
                            var W = V.data.dialog;
                            if (W.oW('cancel', {hide: true}).hide !== false) W.hide();
                        }
                    }, U, true);
                };
                S.type = 'button';
                S.override = function (T) {
                    return k.extend(function (U) {
                        return S(U, T);
                    }, {type: 'button'}, true);
                };
                return S;
            })(), addUIElement: function (S, T) {
                this._.gv[S] = T;
            }
        });
        a.dialog._ = {gv: {}, ev: {}, dL: null, gw: null};
        a.event.du(a.dialog);
        a.event.du(a.dialog.prototype, true);
        var v = {
            resizable: a.DIALOG_RESIZE_NONE,
            minWidth: 600,
            minHeight: 400,
            buttons: [a.dialog.okButton, a.dialog.cancelButton]
        }, w = function (S, T, U) {
            for (var V = 0, W; W = S[V]; V++) {
                if (W.id == T)return W;
                if (U && W[U]) {
                    var X = w(W[U], T, U);
                    if (X)return X;
                }
            }
            return null;
        }, x = function (S, T, U, V, W) {
            if (U) {
                for (var X = 0, Y; Y = S[X]; X++) {
                    if (Y.id == U) {
                        S.splice(X, 0, T);
                        return T;
                    }
                    if (V && Y[V]) {
                        var Z = x(Y[V], T, U, V, true);
                        if (Z)return Z;
                    }
                }
                if (W)return null;
            }
            S.push(T);
            return T;
        }, y = function (S, T, U) {
            for (var V = 0, W; W = S[V]; V++) {
                if (W.id == T)return S.splice(V, 1);
                if (U && W[U]) {
                    var X = y(W[U], T, U);
                    if (X)return X;
                }
            }
            return null;
        }, z = function (S, T) {
            this.dialog = S;
            var U = T.contents;
            for (var V = 0, W; W = U[V]; V++)U[V] = new A(S, W);
            k.extend(this, T);
        };
        z.prototype = {
            vz: function (S) {
                return w(this.contents, S);
            }, getButton: function (S) {
                return w(this.buttons, S);
            }, uh: function (S, T) {
                return x(this.contents, S, T);
            }, qW: function (S, T) {
                return x(this.buttons, S, T);
            }, uP: function (S) {
                y(this.contents, S);
            }, uO: function (S) {
                y(this.buttons, S);
            }
        };
        function A(S, T) {
            this._ = {dialog: S};
            k.extend(this, T);
        };
        A.prototype = {
            eB: function (S) {
                return w(this.elements, S, 'children');
            }, add: function (S, T) {
                return x(this.elements, S, T, 'children');
            }, remove: function (S) {
                y(this.elements, S, 'children');
            }
        };
        function B(S) {
            var T = null, U = null, V = S.getElement().getFirst(), W = S.eY(), X = W.config.dialog_magnetDistance, Y = W.skin.margins || [0, 0, 0, 0];
            if (typeof X == 'undefined') X = 20;
            function Z(aT) {
                var bm = S.hR(), bW = a.document.getWindow().eR(), eS = aT.data.$.screenX, fv = aT.data.$.screenY, aP = eS - T.x, bV = fv - T.y, eN, gB;
                T = {x: eS, y: fv};
                U.x += aP;
                U.y += bV;
                if (U.x + Y[3] < X) eN = -Y[3]; else if (U.x - Y[1] > bW.width - bm.width - X) eN = bW.width - bm.width + Y[1]; else eN = U.x;
                if (U.y + Y[0] < X) gB = -Y[0]; else if (U.y - Y[2] > bW.height - bm.height - X) gB = bW.height - bm.height + Y[2]; else gB = U.y;
                S.move(eN, gB, 1);
                aT.data.preventDefault();
            };
            function aa(aT) {
                a.document.removeListener('mousemove', Z);
                a.document.removeListener('mouseup', aa);
                if (h.ie6Compat) {
                    var bm = E.getChild(0).getFrameDocument();
                    bm.removeListener('mousemove', Z);
                    bm.removeListener('mouseup', aa);
                }
            };
            S.bO.title.on('mousedown', function (aT) {
                T = {x: aT.data.$.screenX, y: aT.data.$.screenY};
                a.document.on('mousemove', Z);
                a.document.on('mouseup', aa);
                U = S.gz();
                if (h.ie6Compat) {
                    var bm = E.getChild(0).getFrameDocument();
                    bm.on('mousemove', Z);
                    bm.on('mouseup', aa);
                }
                aT.data.preventDefault();
            }, S);
        };
        function C(S) {
            var T = S.dg, U = T.resizable;
            if (U == a.DIALOG_RESIZE_NONE)return;
            var V = S.eY(), W, X, Y, Z, aa, aT;

            function bm(aP) {
                if (S._.moved && V.lang.dir == 'rtl') {
                    var bV = S._.element.getFirst();
                    bV.setStyle('right', aP + 'px');
                    bV.removeStyle('left');
                } else if (!S._.moved) S.layout();
            };
            function bW(aP) {
                aa = S.hR();
                aP = aP.data.$;
                var bV = S.bO.contents, eN = bV.$.getElementsByTagName('iframe').length;
                if (eN) {
                    aT = m.kE('<div class="cke_dialog_resize_cover" style="height: 100%; position: absolute; width: 100%;"></div>');
                    bV.append(aT);
                }
                X = aa.height - S.bO.contents.hR('height', !(h.gecko || h.opera || i && h.quirks));
                W = aa.width - S.bO.contents.hR('width', 1);
                Z = {x: aP.screenX, y: aP.screenY};
                Y = a.document.getWindow().eR();
                a.document.on('mousemove', eS);
                a.document.on('mouseup', fv);
                if (h.ie6Compat) {
                    var gB = E.getChild(0).getFrameDocument();
                    gB.on('mousemove', eS);
                    gB.on('mouseup', fv);
                }
                aP.preventDefault && aP.preventDefault();
            };
            S.on('load', function () {
                var aP = '';
                if (U == a.DIALOG_RESIZE_WIDTH) aP = ' cke_resizer_horizontal'; else if (U == a.DIALOG_RESIZE_HEIGHT) aP = ' cke_resizer_vertical';
                var bV = m.kE('<div class="cke_resizer' + aP + '"' + ' title="' + k.htmlEncode(V.lang.resize) + '"></div>');
                bV.on('mousedown', bW);
                S.bO.footer.append(bV, 1);
            });
            V.on('destroy', function () {
                k.removeFunction(bW);
            });
            function eS(aP) {
                var bV = V.lang.dir == 'rtl', eN = (aP.data.$.screenX - Z.x) * (bV ? -1 : 1), gB = aP.data.$.screenY - Z.y, dX = aa.width, gs = aa.height, am = dX + eN * (S._.moved ? 1 : 2), gP = gs + gB * (S._.moved ? 1 : 2), gR = S._.element.getFirst(), pw = bV && gR.getComputedStyle('right'), aq = S.gz();
                if (pw) pw = pw == 'auto' ? Y.width - (aq.x || 0) - gR.hR('width') : parseInt(pw, 10);
                if (aq.y + gP > Y.height) gP = Y.height - aq.y;
                if ((bV ? pw : aq.x) + am > Y.width) am = Y.width - (bV ? pw : aq.x);
                if ((U == a.DIALOG_RESIZE_WIDTH || U == a.DIALOG_RESIZE_BOTH) && !(bV && eN > 0 && !aq.x)) dX = Math.max(T.minWidth || 0, am - W);
                if (U == a.DIALOG_RESIZE_HEIGHT || U == a.DIALOG_RESIZE_BOTH) gs = Math.max(T.minHeight || 0, gP - X);
                S.resize(dX, gs);
                bm(pw);
                aP.data.preventDefault();
            };
            function fv() {
                a.document.removeListener('mouseup', fv);
                a.document.removeListener('mousemove', eS);
                if (aT) {
                    aT.remove();
                    aT = null;
                }
                if (h.ie6Compat) {
                    var aP = E.getChild(0).getFrameDocument();
                    aP.removeListener('mouseup', fv);
                    aP.removeListener('mousemove', eS);
                }
                if (V.lang.dir == 'rtl') {
                    var bV = S._.element.getFirst(), eN = bV.getComputedStyle('left');
                    if (eN == 'auto') eN = Y.width - parseInt(bV.rd('right'), 10) - S.hR().width; else eN = parseInt(eN, 10);
                    bV.removeStyle('right');
                    S._.position.x += 1;
                    S.move(eN, S._.position.y);
                }
            };
        };
        var D = true, E, F, G = function (S) {
            var T = a.document.getWindow();
            if (!D || !E) {
                var U = S.config.dialog_backgroundCoverColor || 'white', V = ['<div style="position: ', h.ie6Compat ? 'absolute' : 'fixed', '; z-index: ', S.config.baseFloatZIndex, '; top: 0px; left: 0px; ', !h.ie6Compat ? 'background-color: ' + U : '', '" id="cke_dialog_background_cover">'];
                if (h.ie6Compat) {
                    var W = h.isCustomDomain(), X = "<html><body style=\\'background-color:" + U + ";\\'></body></html>";
                    V.push('<iframe hp="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');
                    V.push('void((function(){document.open();' + (W ? "document.domain='" + document.domain + "';" : '') + "document.write( '" + X + "' );" + 'document.close();' + '})())');
                    V.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');
                }
                V.push('</div>');
                E = m.kE(V.join(''), a.document);
            }
            var Y = E, Z = function () {
                var bW = T.eR();
                Y.setStyles({width: bW.width + 'px', height: bW.height + 'px'});
            }, aa = function () {
                var bW = T.hV(), eS = a.dialog._.dL;
                Y.setStyles({left: bW.x + 'px', top: bW.y + 'px'});
                do {
                    var fv = eS.gz();
                    eS.move(fv.x, fv.y);
                } while (eS = eS._.ep);
            };
            F = Z;
            T.on('resize', Z);
            Z();
            if (h.ie6Compat) {
                var aT = function () {
                    aa();
                    arguments.callee.lw.apply(this, arguments);
                };
                T.$.setTimeout(function () {
                    aT.lw = window.onscroll || (function () {
                        });
                    window.onscroll = aT;
                }, 0);
                aa();
            }
            var bm = S.config.dialog_backgroundCoverOpacity;
            Y.setOpacity(typeof bm != 'undefined' ? bm : 0.5);
            Y.appendTo(a.document.bH());
        }, H = function () {
            if (!E)return;
            var S = a.document.getWindow();
            E.remove();
            S.removeListener('resize', F);
            if (h.ie6Compat) S.$.setTimeout(function () {
                var T = window.onscroll && window.onscroll.lw;
                window.onscroll = T || null;
            }, 0);
            F = null;
        }, I = {}, J = function (S) {
            var T = S.data.$.ctrlKey || S.data.$.metaKey, U = S.data.$.altKey, V = S.data.$.shiftKey, W = String.fromCharCode(S.data.$.keyCode), X = I[(T ? 'bP+' : '') + (U ? 'eJ+' : '') + (V ? 'dy+' : '') + W];
            if (!X || !X.length)return;
            X = X[X.length - 1];
            X.keydown && X.keydown.call(X.bf, X.dialog, X.iK);
            S.data.preventDefault();
        }, K = function (S) {
            var T = S.data.$.ctrlKey || S.data.$.metaKey, U = S.data.$.altKey, V = S.data.$.shiftKey, W = String.fromCharCode(S.data.$.keyCode), X = I[(T ? 'bP+' : '') + (U ? 'eJ+' : '') + (V ? 'dy+' : '') + W];
            if (!X || !X.length)return;
            X = X[X.length - 1];
            if (X.keyup) {
                X.keyup.call(X.bf, X.dialog, X.iK);
                S.data.preventDefault();
            }
        }, L = function (S, T, U, V, W) {
            var X = I[U] || (I[U] = []);
            X.push({bf: S, dialog: T, iK: U, keyup: W || S.eZ, keydown: V || S.iU});
        }, M = function (S) {
            for (var T in I) {
                var U = I[T];
                for (var V = U.length - 1; V >= 0; V--) {
                    if (U[V].dialog == S || U[V].bf == S) U.splice(V, 1);
                }
                if (U.length === 0) delete I[T];
            }
        }, N = function (S, T) {
            if (S._.iX[T]) S.selectPage(S._.iX[T]);
        }, O = function (S, T) {
        }, P = {27: 1, 13: 1}, Q = function (S) {
            if (S.data.db() in P) S.data.stopPropagation();
        };
        (function () {
            p.dialog = {
                bf: function (S, T, U, V, W, X, Y) {
                    if (arguments.length < 4)return;
                    var Z = (V.call ? V(T) : V) || 'div', aa = ['<', Z, ' '], aT = (W && W.call ? W(T) : W) || {}, bm = (X && X.call ? X(T) : X) || {}, bW = (Y && Y.call ? Y(S, T) : Y) || '', eS = this.oJ = bm.id || k.getNextNumber() + '_uiElement', fv = this.id = T.id, aP;
                    bm.id = eS;
                    var bV = {};
                    if (T.type) bV['cke_dialog_ui_' + T.type] = 1;
                    if (T.className) bV[T.className] = 1;
                    var eN = bm['class'] && bm['class'].split ? bm['class'].split(' ') : [];
                    for (aP = 0; aP < eN.length; aP++) {
                        if (eN[aP]) bV[eN[aP]] = 1;
                    }
                    var gB = [];
                    for (aP in bV)gB.push(aP);
                    bm['class'] = gB.join(' ');
                    if (T.title) bm.title = T.title;
                    var dX = (T.style || '').split(';');
                    for (aP in aT)dX.push(aP + ':' + aT[aP]);
                    if (T.hidden) dX.push('display:none');
                    for (aP = dX.length - 1; aP >= 0; aP--) {
                        if (dX[aP] === '') dX.splice(aP, 1);
                    }
                    if (dX.length > 0) bm.style = (bm.style ? bm.style + '; ' : '') + dX.join('; ');
                    for (aP in bm)aa.push(aP + '="' + k.htmlEncode(bm[aP]) + '" ');
                    aa.push('>', bW, '</', Z, '>');
                    U.push(aa.join(''));
                    (this._ || (this._ = {})).dialog = S;
                    if (typeof T.isChanged == 'boolean') this.isChanged = function () {
                        return T.isChanged;
                    };
                    if (typeof T.isChanged == 'function') this.isChanged = T.isChanged;
                    a.event.du(this);
                    this.nc(T);
                    if (this.eZ && this.iU && T.accessKey) L(this, S, 'bP+' + T.accessKey);
                    var gs = this;
                    S.on('load', function () {
                        if (gs.getInputElement()) gs.getInputElement().on('focus', function () {
                            S._.eC = false;
                            S._.hasFocus = true;
                            gs.oW('focus');
                        }, gs);
                    });
                    if (this.eA) {
                        this.cQ = S._.eO.push(this) - 1;
                        this.on('focus', function () {
                            S._.aW = gs.cQ;
                        });
                    }
                    k.extend(this, T);
                }, hbox: function (S, T, U, V, W) {
                    if (arguments.length < 4)return;
                    this._ || (this._ = {});
                    var X = this._.children = T, Y = W && W.widths || null, Z = W && W.height || null, aa = {}, aT, bm = function () {
                        var bW = ['<tbody><tr class="cke_dialog_ui_hbox">'];
                        for (aT = 0; aT < U.length; aT++) {
                            var eS = 'cke_dialog_ui_hbox_child', fv = [];
                            if (aT === 0) eS = 'cke_dialog_ui_hbox_first';
                            if (aT == U.length - 1) eS = 'cke_dialog_ui_hbox_last';
                            bW.push('<td class="', eS, '" ');
                            if (Y) {
                                if (Y[aT]) fv.push('width:' + k.cssLength(Y[aT]));
                            } else fv.push('width:' + Math.floor(100 / U.length) + '%');
                            if (Z) fv.push('height:' + k.cssLength(Z));
                            if (W && W.padding != undefined) fv.push('padding:' + k.cssLength(W.padding));
                            if (fv.length > 0) bW.push('style="' + fv.join('; ') + '" ');
                            bW.push('>', U[aT], '</td>');
                        }
                        bW.push('</tr></tbody>');
                        return bW.join('');
                    };
                    p.dialog.bf.call(this, S, W || {type: 'hbox'}, V, 'table', aa, W && W.align && {align: W.align} || null, bm);
                }, vbox: function (S, T, U, V, W) {
                    if (arguments.length < 3)return;
                    this._ || (this._ = {});
                    var X = this._.children = T, Y = W && W.width || null, Z = W && W.vY || null, aa = function () {
                        var aT = ['<table cellspacing="0" border="0" '];
                        aT.push('style="');
                        if (W && W.expand) aT.push('height:100%;');
                        aT.push('width:' + k.cssLength(Y || '100%'), ';');
                        aT.push('"');
                        aT.push('align="', k.htmlEncode(W && W.align || (S.eY().lang.dir == 'ltr' ? 'left' : 'right')), '" ');
                        aT.push('><tbody>');
                        for (var bm = 0; bm < U.length; bm++) {
                            var bW = [];
                            aT.push('<tr><td ');
                            if (Y) bW.push('width:' + k.cssLength(Y || '100%'));
                            if (Z) bW.push('height:' + k.cssLength(Z[bm])); else if (W && W.expand) bW.push('height:' + Math.floor(100 / U.length) + '%');
                            if (W && W.padding != undefined) bW.push('padding:' + k.cssLength(W.padding));
                            if (bW.length > 0) aT.push('style="', bW.join('; '), '" ');
                            aT.push(' class="cke_dialog_ui_vbox_child">', U[bm], '</td></tr>');
                        }
                        aT.push('</tbody></table>');
                        return aT.join('');
                    };
                    p.dialog.bf.call(this, S, W || {type: 'vbox'}, V, 'div', null, null, aa);
                }
            };
        })();
        p.dialog.bf.prototype = {
            getElement: function () {
                return a.document.getById(this.oJ);
            }, getInputElement: function () {
                return this.getElement();
            }, getDialog: function () {
                return this._.dialog;
            }, setValue: function (S) {
                this.getInputElement().setValue(S);
                this.oW('change', {value: S});
                return this;
            }, getValue: function () {
                return this.getInputElement().getValue();
            }, isChanged: function () {
                return false;
            }, selectParentTab: function () {
                var V = this;
                var S = V.getInputElement(), T = S, U;
                while ((T = T.getParent()) && T.$.className.search('cke_dialog_page_contents') == -1) {
                }
                if (!T)return V;
                U = T.getAttribute('name');
                if (V._.dialog._.gx != U) V._.dialog.selectPage(U);
                return V;
            }, focus: function () {
                this.selectParentTab().getInputElement().focus();
                return this;
            }, nc: function (S) {
                var T = /^on([A-Z]\w+)/, U, V = function (X, Y, Z, aa) {
                    Y.on('load', function () {
                        X.getInputElement().on(Z, aa, X);
                    });
                };
                for (var W in S) {
                    if (!(U = W.match(T)))continue;
                    if (this.dm[W]) this.dm[W].call(this, this._.dialog, S[W]); else V(this, this._.dialog, U[1].toLowerCase(), S[W]);
                }
                return this;
            }, dm: {
                onLoad: function (S, T) {
                    S.on('load', T, this);
                }, onShow: function (S, T) {
                    S.on('show', T, this);
                }, onHide: function (S, T) {
                    S.on('hide', T, this);
                }
            }, iU: function (S, T) {
                this.focus();
            }, eZ: function (S, T) {
            }, disable: function () {
                var S = this.getInputElement();
                S.setAttribute('disabled', 'true');
                S.addClass('cke_disabled');
            }, enable: function () {
                var S = this.getInputElement();
                S.removeAttribute('disabled');
                S.removeClass('cke_disabled');
            }, isEnabled: function () {
                return !this.getInputElement().getAttribute('disabled');
            }, isVisible: function () {
                return this.getInputElement().isVisible();
            }, fM: function () {
                if (!this.isEnabled() || !this.isVisible())return false;
                return true;
            }
        };
        p.dialog.hbox.prototype = k.extend(new p.dialog.bf(), {
            getChild: function (S) {
                var T = this;
                if (arguments.length < 1)return T._.children.concat();
                if (!S.splice) S = [S];
                if (S.length < 2)return T._.children[S[0]]; else return T._.children[S[0]] && T._.children[S[0]].getChild ? T._.children[S[0]].getChild(S.slice(1, S.length)) : null;
            }
        }, true);
        p.dialog.vbox.prototype = new p.dialog.hbox();
        (function () {
            var S = {
                dQ: function (T, U, V) {
                    var W = U.children, X, Y = [], Z = [];
                    for (var aa = 0; aa < W.length && (X = W[aa]); aa++) {
                        var aT = [];
                        Y.push(aT);
                        Z.push(a.dialog._.gv[X.type].dQ(T, X, aT));
                    }
                    return new p.dialog[U.type](T, Z, Y, V, U);
                }
            };
            a.dialog.addUIElement('hbox', S);
            a.dialog.addUIElement('vbox', S);
        })();
        a.rB = function (S) {
            this.ry = S;
        };
        a.rB.prototype = {
            exec: function (S) {
                S.openDialog(this.ry);
            }, sG: false
        };
        (function () {
            var S = /^([a]|[^a])+$/, T = /^\d*$/, U = /^\d*(?:\.\d+)?$/;
            a.sg = 1;
            a.jb = 2;
            a.dialog.validate = {
                functions: function () {
                    return function () {
                        var aT = this;
                        var V = aT && aT.getValue ? aT.getValue() : arguments[0], W = undefined, X = a.jb, Y = [], Z;
                        for (Z = 0; Z < arguments.length; Z++) {
                            if (typeof arguments[Z] == 'function') Y.push(arguments[Z]); else break;
                        }
                        if (Z < arguments.length && typeof arguments[Z] == 'string') {
                            W = arguments[Z];
                            Z++;
                        }
                        if (Z < arguments.length && typeof arguments[Z] == 'number') X = arguments[Z];
                        var aa = X == a.jb ? true : false;
                        for (Z = 0; Z < Y.length; Z++) {
                            if (X == a.jb) aa = aa && Y[Z](V); else aa = aa || Y[Z](V);
                        }
                        if (!aa) {
                            if (W !== undefined) alert(W);
                            if (aT && (aT.select || aT.focus)) aT.select || aT.focus();
                            return false;
                        }
                        return true;
                    };
                }, regex: function (V, W) {
                    return function () {
                        var Y = this;
                        var X = Y && Y.getValue ? Y.getValue() : arguments[0];
                        if (!V.test(X)) {
                            if (W !== undefined) alert(W);
                            if (Y && (Y.select || Y.focus))if (Y.select) Y.select(); else Y.focus();
                            return false;
                        }
                        return true;
                    };
                }, notEmpty: function (V) {
                    return this.regex(S, V);
                }, integer: function (V) {
                    return this.regex(T, V);
                }, number: function (V) {
                    return this.regex(U, V);
                }, equals: function (V, W) {
                    return this.functions(function (X) {
                        return X == V;
                    }, W);
                }, notEqual: function (V, W) {
                    return this.functions(function (X) {
                        return X != V;
                    }, W);
                }
            };
        })();
        function R(S, T) {
            var U = function () {
                W(this);
                T(this);
            }, V = function () {
                W(this);
            }, W = function (X) {
                X.removeListener('ok', U);
                X.removeListener('cancel', V);
            };
            S.on('ok', U);
            S.on('cancel', V);
        };
        k.extend(a.application.prototype, {
            openDialog: function (S, T, U) {
                var V = a.dialog._.ev[S];
                if (typeof V == 'function') {
                    var W = this._.oB || (this._.oB = {}), X = W[S] || (W[S] = new a.dialog(this, S));
                    T && T.call(X, X);
                    !this._.activeElement && (this._.activeElement = this.document.$.activeElement);
                    !this._.oO && (this._.oO = this.ld['filesview.filesview'].tools.oO());
                    X.show();
                    return X;
                } else if (V == 'failed')throw new Error('[CKFINDER.dialog.openDialog] Dialog "' + S + '" failed when loading dg.');
                var Y = a.document.bH(), Z = Y.$.style.cursor, aa = this;
                Y.setStyle('cursor', 'wait');
                a.scriptLoader.load(a.getUrl(V), function () {
                    if (typeof a.dialog._.ev[S] != 'function') a.dialog._.ev[S] = 'failed';
                    aa.openDialog(S, T);
                    Y.setStyle('cursor', Z);
                }, null, null, U);
                return null;
            }, hs: function (S, T, U, V) {
                var W = this;
                setTimeout(function () {
                    W.cg.openDialog('Input', function (X) {
                        X.show();
                        X.setTitle(S || W.lang.common.inputTitle);
                        X.getContentElement('tab1', 'msg').getElement().setHtml(T);
                        X.getContentElement('tab1', 'input').setValue(U);
                        R(X, function (Y) {
                            var Z = Y.getContentElement('tab1', 'input').getValue();
                            V(Z);
                        });
                    });
                }, 0);
            }, msgDialog: function (S, T, U) {
                var V = this;
                setTimeout(function () {
                    V.cg.openDialog('Msg', function (W) {
                        W.show();
                        W.setTitle(S || V.lang.common.messageTitle);
                        W.getContentElement('tab1', 'msg').getElement().setHtml(T);
                        U && R(W, function (X) {
                            U();
                        });
                    });
                }, 0);
            }, fe: function (S, T, U) {
                var V = this;
                setTimeout(function () {
                    V.cg.openDialog('Confirm', function (W) {
                        W.show();
                        W.setTitle(S || V.lang.common.confirmationTitle);
                        W.getContentElement('tab1', 'msg').getElement().setHtml(T);
                        R(W, function (X) {
                            U();
                        });
                    });
                }, 0);
            }, skippedFilesDialog: function (S, T, U, V) {
                var W = this;
                setTimeout(function () {
                    W.cg.openDialog('SkippedFiles', function (X) {
                        X.show();
                        X.setTitle(S || W.lang.common.messageTitle);
                        if (U) {
                            X.getContentElement('tab1', 'msg').getElement().show();
                            X.getContentElement('tab1', 'msg').getElement().setHtml(U);
                        } else X.getContentElement('tab1', 'msg').getElement().hide();
                        var Y = '', Z = 'cke_files_list', aa = '', aT = T.length;
                        if (aT > 3) {
                            Z += ' cke_files_list_many';
                            aa = ' style="height: ' + Math.min(aT + 0.1, 20) + 'em"';
                        }
                        for (var bm = 0; bm < aT; bm++)Y += '<li>' + k.escapeHtml(typeof T[bm] == 'string' ? T[bm] : T[bm].getAttribute('name')) + '</li>';
                        X.getContentElement('tab1', 'skippedList').getElement().setHtml('<ul class="' + Z + '"' + aa + '>' + Y + '</ul>');
                        V && R(X, function () {
                            V();
                        });
                    });
                }, 0);
            }
        });
        o.add('dialog', {
            bM: ['dialogui'], onLoad: function () {
                a.dialog.add('Confirm', function (S) {
                    return {
                        title: S.lang.common.confirmationTitle,
                        minWidth: 270,
                        minHeight: 60,
                        contents: [{id: 'tab1', elements: [{type: 'html', html: '', id: 'msg'}]}],
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
                    };
                });
                a.dialog.add('Msg', function (S) {
                    return {
                        title: S.lang.common.messageTitle,
                        minWidth: 270,
                        minHeight: 60,
                        contents: [{id: 'tab1', elements: [{type: 'html', html: '', id: 'msg'}]}],
                        buttons: [CKFinder.dialog.okButton]
                    };
                });
                a.dialog.add('Input', function (S) {
                    return {
                        title: S.lang.common.inputTitle,
                        minWidth: 270,
                        minHeight: 60,
                        contents: [{
                            id: 'tab1',
                            elements: [{type: 'html', html: '', id: 'msg'}, {type: 'text', id: 'input'}]
                        }],
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
                    };
                });
                a.dialog.add('SkippedFiles', function (S) {
                    return {
                        title: S.lang.common.messageTitle,
                        minWidth: 400,
                        minHeight: 100,
                        contents: [{
                            id: 'tab1',
                            style: h.ie7Compat ? 'height: auto' : '',
                            expand: true,
                            padding: 0,
                            elements: [{
                                type: 'vbox',
                                expand: true,
                                children: [{type: 'html', className: 'cke_dialog_msg', html: '', id: 'msg'}, {
                                    type: 'html',
                                    id: 'skippedDescription',
                                    className: 'cke_dialog_msg',
                                    html: S.lang.SkippedFiles
                                }, {type: 'html', id: 'skippedList', className: 'cke_dialog_msg', html: ''}]
                            }]
                        }],
                        buttons: [CKFinder.dialog.okButton]
                    };
                });
            }
        });
    })();
    o.add('dialogui');
    (function () {
        var r = function (y) {
            var B = this;
            B._ || (B._ = {});
            B._['default'] = B._.hq = y['default'] || '';
            var z = [B._];
            for (var A = 1; A < arguments.length; A++)z.push(arguments[A]);
            z.push(true);
            k.extend.apply(k, z);
            return B._;
        }, s = {
            dQ: function (y, z, A) {
                return new p.dialog.ju(y, z, A);
            }
        }, t = {
            dQ: function (y, z, A) {
                return new p.dialog[z.type](y, z, A);
            }
        }, u = {
            isChanged: function () {
                return this.getValue() != this.lu();
            }, reset: function () {
                this.setValue(this.lu());
            }, jW: function () {
                this._.hq = this.getValue();
            }, ki: function () {
                this._.hq = this._['default'];
            }, lu: function () {
                return this._.hq;
            }
        }, v = k.extend({}, p.dialog.bf.prototype.dm, {
            onChange: function (y, z) {
                if (!this._.pL) {
                    y.on('load', function () {
                        this.getInputElement().on('change', function () {
                            this.oW('change', {value: this.getValue()});
                        }, this);
                    }, this);
                    this._.pL = true;
                }
                this.on('change', z);
            }
        }, true), w = /^on([A-Z]\w+)/, x = function (y) {
            for (var z in y) {
                if (w.test(z) || z == 'title' || z == 'type') delete y[z];
            }
            return y;
        };
        k.extend(p.dialog, {
            dD: function (y, z, A, B) {
                if (arguments.length < 4)return;
                var C = r.call(this, z);
                C.hz = k.getNextNumber() + '_label';
                var D = this._.children = [], E = function () {
                    var F = [];
                    if (z.uC != 'horizontal') F.push('<div class="cke_dialog_ui_labeled_label" id="', C.hz, '" >', z.label, '</div>', '<div class="cke_dialog_ui_labeled_content">', B(y, z), '</div>'); else {
                        var G = {
                            type: 'hbox',
                            widths: z.widths,
                            padding: 0,
                            children: [{
                                type: 'html',
                                html: '<span class="cke_dialog_ui_labeled_label" id="' + C.hz + '">' + k.htmlEncode(z.label) + '</span>'
                            }, {
                                type: 'html',
                                html: '<span class="cke_dialog_ui_labeled_content">' + B(y, z) + '</span>'
                            }]
                        };
                        a.dialog._.gv.hbox.dQ(y, G, F);
                    }
                    return F.join('');
                };
                p.dialog.bf.call(this, y, z, A, 'div', null, null, E);
            }, ju: function (y, z, A) {
                if (arguments.length < 3)return;
                r.call(this, z);
                var B = this._.le = k.getNextNumber() + '_textInput', C = {
                    'class': 'cke_dialog_ui_input_' + z.type,
                    id: B,
                    type: 'text'
                }, D;
                if (z.validate) this.validate = z.validate;
                if (z.maxLength) C.uy = z.maxLength;
                if (z.size) C.size = z.size;
                var E = this, F = false;
                y.on('load', function () {
                    E.getInputElement().on('keydown', function (H) {
                        if (H.data.db() == 13) F = true;
                    });
                    E.getInputElement().on('keyup', function (H) {
                        if (H.data.db() == 13 && F) {
                            y.getButton('ok') && setTimeout(function () {
                                y.getButton('ok').click();
                            }, 0);
                            F = false;
                        }
                    }, null, null, 1000);
                });
                var G = function () {
                    var H = ['<div class="cke_dialog_ui_input_', z.type, '"'];
                    if (z.width) H.push('style="width:' + z.width + '" ');
                    H.push('><input ');
                    for (var I in C)H.push(I + '="' + C[I] + '" ');
                    H.push(' /></div>');
                    return H.join('');
                };
                p.dialog.dD.call(this, y, z, A, G);
            }, textarea: function (y, z, A) {
                if (arguments.length < 3)return;
                r.call(this, z);
                var B = this, C = this._.le = k.getNextNumber() + '_textarea', D = {};
                if (z.validate) this.validate = z.validate;
                D.rows = z.rows || 5;
                D.cols = z.cols || 20;
                var E = function () {
                    var F = ['<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="', C, '" '];
                    for (var G in D)F.push(G + '="' + k.htmlEncode(D[G]) + '" ');
                    F.push('>', k.htmlEncode(B._['default']), '</textarea></div>');
                    return F.join('');
                };
                p.dialog.dD.call(this, y, z, A, E);
            }, checkbox: function (y, z, A) {
                if (arguments.length < 3)return;
                var B = r.call(this, z, {'default': !!z['default']});
                if (z.validate) this.validate = z.validate;
                var C = function () {
                    var D = k.extend({}, z, {id: z.id ? z.id + '_checkbox' : k.getNextNumber() + '_checkbox'}, true), E = [], F = {
                        'class': 'cke_dialog_ui_checkbox_input',
                        type: 'checkbox'
                    };
                    x(D);
                    if (z['default']) F.checked = 'checked';
                    B.checkbox = new p.dialog.bf(y, D, E, 'input', null, F);
                    E.push(' <label for="', F.id, '">', k.htmlEncode(z.label), '</label>');
                    return E.join('');
                };
                p.dialog.bf.call(this, y, z, A, 'span', null, null, C);
            }, radio: function (y, z, A) {
                if (arguments.length < 3)return;
                r.call(this, z);
                if (!this._['default']) this._['default'] = this._.hq = z.items[0][1];
                if (z.validate) this.validate = z.sh;
                var B = [], C = this, D = function () {
                    var E = [], F = [], G = {'class': 'cke_dialog_ui_radio_item'}, H = z.id ? z.id + '_radio' : k.getNextNumber() + '_radio';
                    for (var I = 0; I < z.items.length; I++) {
                        var J = z.items[I], K = J[2] !== undefined ? J[2] : J[0], L = J[1] !== undefined ? J[1] : J[0], M = k.extend({}, z, {
                            id: k.getNextNumber() + '_radio_input',
                            title: null,
                            type: null
                        }, true), N = k.extend({}, M, {id: null, title: K}, true), O = {
                            type: 'radio',
                            'class': 'cke_dialog_ui_radio_input',
                            name: H,
                            value: L
                        }, P = [];
                        if (C._['default'] == L) O.checked = 'checked';
                        x(M);
                        x(N);
                        B.push(new p.dialog.bf(y, M, P, 'input', null, O));
                        P.push(' ');
                        new p.dialog.bf(y, N, P, 'label', null, {'for': O.id}, J[0]);
                        E.push(P.join(''));
                    }
                    new p.dialog.hbox(y, [], E, F);
                    return F.join('');
                };
                p.dialog.dD.call(this, y, z, A, D);
                this._.children = B;
            }, button: function (y, z, A) {
                if (!arguments.length)return;
                if (typeof z == 'function') z = z(y.eY());
                r.call(this, z, {disabled: z.disabled || false});
                a.event.du(this);
                var B = this;
                y.on('load', function (D) {
                    var E = this.getElement();
                    (function () {
                        E.on('click', function (F) {
                            B.oW('click', {dialog: B.getDialog()});
                            F.data.preventDefault();
                        });
                    })();
                    E.unselectable();
                }, this);
                var C = k.extend({}, z);
                delete C.style;
                p.dialog.bf.call(this, y, C, A, 'a', null, {
                    style: z.style,
                    href: 'javascript:void(0)',
                    title: z.label,
                    hp: 'true',
                    'class': z['class']
                }, '<span class="cke_dialog_ui_button">' + k.htmlEncode(z.label) + '</span>');
            }, select: function (y, z, A) {
                if (arguments.length < 3)return;
                var B = r.call(this, z);
                if (z.validate) this.validate = z.validate;
                var C = function () {
                    var D = k.extend({}, z, {id: z.id ? z.id + '_select' : k.getNextNumber() + '_select'}, true), E = [], F = [], G = {'class': 'cke_dialog_ui_input_select'};
                    if (z.size != undefined) G.size = z.size;
                    if (z.multiple != undefined) G.multiple = z.multiple;
                    x(D);
                    for (var H = 0, I; H < z.items.length && (I = z.items[H]); H++)F.push('<option value="', k.htmlEncode(I[1] !== undefined ? I[1] : I[0]), '" /> ', k.htmlEncode(I[0]));
                    B.select = new p.dialog.bf(y, D, E, 'select', null, G, F.join(''));
                    return E.join('');
                };
                p.dialog.dD.call(this, y, z, A, C);
            }, file: function (y, z, A) {
                if (arguments.length < 3)return;
                if (z['default'] === undefined) z['default'] = '';
                var B = k.extend(r.call(this, z), {dg: z, buttons: []});
                if (z.validate) this.validate = z.validate;
                var C = function () {
                    B.gL = k.getNextNumber() + '_fileInput';
                    var D = h.isCustomDomain(), E = ['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" id="', B.gL, '" title="', z.label, '" src="javascript:void('];
                    E.push(D ? "(function(){document.open();document.domain='" + document.domain + "';" + 'document.close();' + '})()' : '0');
                    E.push(')"></iframe>');
                    return E.join('');
                };
                y.on('load', function () {
                    var D = a.document.getById(B.gL), E = D.getParent();
                    E.addClass('cke_dialog_ui_input_file');
                });
                p.dialog.dD.call(this, y, z, A, C);
            }, fileButton: function (y, z, A) {
                if (arguments.length < 3)return;
                var B = r.call(this, z), C = this;
                if (z.validate) this.validate = z.validate;
                var D = k.extend({}, z), E = D.onClick;
                D.className = (D.className ? D.className + ' ' : '') + 'cke_dialog_ui_button';
                D.onClick = function (F) {
                    var G = z['for'];
                    if (!E || E.call(this, F) !== false) {
                        y.getContentElement(G[0], G[1]).submit();
                        this.disable();
                    }
                };
                y.on('load', function () {
                    y.getContentElement(z['for'][0], z['for'][1])._.buttons.push(C);
                });
                p.dialog.button.call(this, y, D, A);
            }, html: (function () {
                var y = /^\s*<[\w:]+\s+([^>]*)?>/, z = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, A = /\/$/;
                return function (B, C, D) {
                    if (arguments.length < 3)return;
                    var E = [], F, G = C.html, H, I;
                    if (G.charAt(0) != '<') G = '<span>' + G + '</span>';
                    if (C.focus) {
                        var J = this.focus;
                        this.focus = function () {
                            J.call(this);
                            C.focus.call(this);
                            this.oW('focus');
                        };
                        if (C.fM) {
                            var K = this.fM;
                            this.fM = K;
                        }
                        this.eA = true;
                    }
                    p.dialog.bf.call(this, B, C, E, 'span', null, null, '');
                    F = E.join('');
                    H = F.match(y);
                    I = G.match(z) || ['', '', ''];
                    if (A.test(I[1])) {
                        I[1] = I[1].slice(0, -1);
                        I[2] = '/' + I[2];
                    }
                    D.push([I[1], ' ', H[1] || '', I[2]].join(''));
                };
            })()
        }, true);
        p.dialog.html.prototype = new p.dialog.bf();
        p.dialog.dD.prototype = k.extend(new p.dialog.bf(), {
            rW: function (y) {
                var z = a.document.getById(this._.hz);
                if (z.iu() < 1) new j.text(y, a.document).appendTo(z); else z.getChild(0).$.nodeValue = y;
                return this;
            }, vt: function () {
                var y = a.document.getById(this._.hz);
                if (!y || y.iu() < 1)return ''; else return y.getChild(0).getText();
            }, dm: v
        }, true);
        p.dialog.button.prototype = k.extend(new p.dialog.bf(), {
            click: function () {
                var y = this;
                if (!y._.disabled)return y.oW('click', {dialog: y._.dialog});
                y.getElement().$.blur();
                return false;
            }, enable: function () {
                this._.disabled = false;
                var y = this.getElement();
                y && y.removeClass('disabled');
            }, disable: function () {
                this._.disabled = true;
                this.getElement().addClass('disabled');
            }, isVisible: function () {
                return this.getElement().getFirst().isVisible();
            }, isEnabled: function () {
                return !this._.disabled;
            }, dm: k.extend({}, p.dialog.bf.prototype.dm, {
                onClick: function (y, z) {
                    this.on('click', z);
                }
            }, true), eZ: function () {
                this.click();
            }, iU: function () {
                this.focus();
            }, eA: true
        }, true);
        p.dialog.ju.prototype = k.extend(new p.dialog.dD(), {
            getInputElement: function () {
                return a.document.getById(this._.le);
            }, focus: function () {
                var y = this.selectParentTab();
                setTimeout(function () {
                    var z = y.getInputElement();
                    z && z.$.focus();
                }, 0);
            }, select: function () {
                var y = this.selectParentTab();
                setTimeout(function () {
                    var z = y.getInputElement();
                    if (z) {
                        z.$.focus();
                        z.$.select();
                    }
                }, 0);
            }, eZ: function () {
                this.select();
            }, setValue: function (y) {
                y = y !== null ? y : '';
                return p.dialog.bf.prototype.setValue.call(this, y);
            }, eA: true
        }, u, true);
        p.dialog.textarea.prototype = new p.dialog.ju();
        p.dialog.select.prototype = k.extend(new p.dialog.dD(), {
            getInputElement: function () {
                return this._.select.getElement();
            }, add: function (y, z, A) {
                var B = new m('option', this.getDialog().eY().document), C = this.getInputElement().$;
                B.$.text = y;
                B.$.value = z === undefined || z === null ? y : z;
                if (A === undefined || A === null) {
                    if (i) C.add(B.$); else C.add(B.$, null);
                } else C.add(B.$, A);
                return this;
            }, remove: function (y) {
                var z = this.getInputElement().$;
                z.remove(y);
                return this;
            }, clear: function () {
                var y = this.getInputElement().$;
                while (y.length > 0)y.remove(0);
                return this;
            }, eA: true
        }, u, true);
        p.dialog.checkbox.prototype = k.extend(new p.dialog.bf(), {
            getInputElement: function () {
                return this._.checkbox.getElement();
            }, setValue: function (y) {
                this.getInputElement().$.checked = y;
                this.oW('change', {value: y});
            }, getValue: function () {
                return this.getInputElement().$.checked;
            }, eZ: function () {
                this.setValue(!this.getValue());
            }, dm: {
                onChange: function (y, z) {
                    if (!i)return v.onChange.apply(this, arguments); else {
                        y.on('load', function () {
                            var A = this._.checkbox.getElement();
                            A.on('propertychange', function (B) {
                                B = B.data.$;
                                if (B.propertyName == 'checked') this.oW('change', {value: A.$.checked});
                            }, this);
                        }, this);
                        this.on('change', z);
                    }
                    return null;
                }
            }, eA: true
        }, u, true);
        p.dialog.radio.prototype = k.extend(new p.dialog.bf(), {
            setValue: function (y) {
                var z = this._.children, A;
                for (var B = 0; B < z.length && (A = z[B]); B++)A.getElement().$.checked = A.getValue() == y;
                this.oW('change', {value: y});
            }, getValue: function () {
                var y = this._.children;
                for (var z = 0; z < y.length; z++) {
                    if (y[z].getElement().$.checked)return y[z].getValue();
                }
                return null;
            }, eZ: function () {
                var y = this._.children, z;
                for (z = 0; z < y.length; z++) {
                    if (y[z].getElement().$.checked) {
                        y[z].getElement().focus();
                        return;
                    }
                }
                y[0].getElement().focus();
            }, dm: {
                onChange: function (y, z) {
                    if (!i)return v.onChange.apply(this, arguments); else {
                        y.on('load', function () {
                            var A = this._.children, B = this;
                            for (var C = 0; C < A.length; C++) {
                                var D = A[C].getElement();
                                D.on('propertychange', function (E) {
                                    E = E.data.$;
                                    if (E.propertyName == 'checked' && this.$.checked) B.oW('change', {value: this.getAttribute('value')});
                                });
                            }
                        }, this);
                        this.on('change', z);
                    }
                    return null;
                }
            }, eA: true
        }, u, true);
        p.dialog.file.prototype = k.extend(new p.dialog.dD(), u, {
            getInputElement: function () {
                var y = a.document.getById(this._.gL).getFrameDocument();
                return y.$.forms.length > 0 ? new m(y.$.forms[0].elements[0]) : this.getElement();
            }, submit: function () {
                this.getInputElement().getParent().$.submit();
                return this;
            }, vy: function (y) {
                return this.getInputElement().getParent().$.action;
            }, reset: function () {
                var y = a.document.getById(this._.gL), z = y.getFrameDocument(), A = this._.dg, B = this._.buttons;

                function C() {
                    z.$.open();
                    if (h.isCustomDomain()) z.$.domain = document.domain;
                    var D = '';
                    if (A.size) D = A.size - (i ? 7 : 0);
                    z.$.write(['<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">', '<form enctype="multipart/form-data" method="POST" action="', k.htmlEncode(A.action), '">', '<input type="file" name="', k.htmlEncode(A.id || 'cke_upload'), '" size="', k.htmlEncode(D > 0 ? D : ''), '" />', '</form>', '</body></html>'].join(''));
                    z.$.close();
                    for (var E = 0; E < B.length; E++)B[E].enable();
                };
                if (h.gecko) setTimeout(C, 500); else C();
            }, getValue: function () {
                return '';
            }, dm: v, eA: true
        }, true);
        p.dialog.fileButton.prototype = new p.dialog.button();
        a.dialog.addUIElement('text', s);
        a.dialog.addUIElement('password', s);
        a.dialog.addUIElement('textarea', t);
        a.dialog.addUIElement('checkbox', t);
        a.dialog.addUIElement('radio', t);
        a.dialog.addUIElement('button', t);
        a.dialog.addUIElement('select', t);
        a.dialog.addUIElement('file', t);
        a.dialog.addUIElement('fileButton', t);
        a.dialog.addUIElement('html', t);
        k.extend(CKFinder.dialog, a.dialog);
    })();
    (function () {
        o.add('help', {
            bM: ['toolbar', 'button'], bz: function s(r) {
                if (!r.config.disableHelpButton) {
                    r.bD('help', {
                        exec: function (t) {
                            t.ld['filesview.filesview'].bn().focus();
                            window.open(a.basePath + 'help/' + (t.lang.HelpLang || 'en') + '/index.html');
                        }
                    });
                    r.bY.add('Help', a.UI_BUTTON, {label: r.lang.Help, command: 'help'});
                }
            }
        });
    })();
    (function () {
        var r = 1, s = 2, t = 3, u = 4, v = 5, w = 0, x = 0, y = [], z, A, B;

        function C(K, L, M, N, O) {
            var P = 0, Q = 0, R = [];
            for (var S = 0; S < K.length; S++) {
                if (!N || N(K[S])) {
                    R.push('<a href="', K[S].getUrl(), '" title="', k.escapeHtml(K[S].name), '" rel="', k.escapeHtml(M), '">a</a>');
                    if (K[S].isSameFile(L)) P = Q;
                    Q++;
                }
            }
            B = 'ckf_gallery_' + k.getRandomString(20);
            F();
            A = new m('div', O);
            A.setAttribute('id', B);
            A.setHtml(R.join(''));
            A.appendTo(O.bH());
            A.hide();
            return P;
        };
        function D(K) {
            if (K && K.inPopup) {
                var L = new l(K.document), M = L.getWindow();
                if (!i && !h.opera || M.$.top.location.href.match(/ckfinder.html/) || M.$.top.name == 'CKFinderpopup')return L;
            }
            return a.oC;
        };
        function E(K) {
            return function () {
                K.$.activeElement && K.$.activeElement.blur();
                K.$.activeElement && K.$.activeElement.blur();
                if (!h.gecko) {
                    K.getWindow().focus();
                    K.bH().focus();
                }
            };
        };
        function F() {
            A && A.remove();
        };
        function G(K) {
            return function () {
                F();
                K && K.focus(true, true);
            };
        };
        function H(K) {
            if (K.click) K.click(); else if (a.document.$.createEvent) {
                var L = a.document.$.createEvent('MouseEvents');
                L.initEvent('click', true, true);
                K.dispatchEvent(L);
            }
        };
        function I(K, L, M) {
            if (i && h.version < 9) K.$.onreadystatechange = function () {
                if (this.readyState == 'loaded' || this.readyState == 'complete') setTimeout(function () {
                    L.callee.apply(M, L);
                }, 0);
            }; else K.on('load', function () {
                setTimeout(function () {
                    L.callee.apply(M, L);
                }, 0);
            });
        };
        CKFinder.addPlugin('gallery', {
            bM: ['filesview'], appReady: function () {
                w = 0;
                x = 0;
                y = [];
                z = null;
                A = null;
            }, galleryCallback: function (K, L, M) {
                if (!x) J(null, K);
                var N = D(K), O = N.getWindow().$, P = function (bm) {
                    return bm.isImage();
                };
                if (!w && K.config.gallery_autoLoad) {
                    if (!P(L))return false;
                    var Q = N.getHead(), R = CKFinder.getPluginPath('gallery') + 'colorbox/', S = arguments, T, U = typeof O.jQuery == 'undefined';
                    if (!U) {
                        var V = O.jQuery.fn.jquery.split('.'), W = parseInt(V[0], 10), X = parseInt(V[1], 10), Y = parseInt(V[2] || 0, 10);
                        if (W < 1 || W == 1 && X < 4 || W == 1 && X == 4 && Y < 3) U = true;
                    }
                    if (U) {
                        if (O.jQuery) y = [O.jQuery, O.$];
                        T = new m('script', N);
                        T.setAttribute('type', 'text/javascript');
                        T.setAttribute('src', R + 'jquery.min.js');
                        I(T, S, O);
                        T.appendTo(Q);
                        return true;
                    }
                    N.appendStyleSheet(R + 'colorbox.css');
                    T = new m('script', N);
                    T.setAttribute('type', 'text/javascript');
                    T.setAttribute('src', R + 'jquery.colorbox-min.js');
                    I(T, S, O);
                    T.appendTo(Q);
                    return true;
                }
                if (y.length) {
                    z = O.jQuery.noConflict(true);
                    O.jQuery = y[0];
                    O.$ = y[1];
                    y = [];
                }
                if (!z) z = O.jQuery;
                if (w) {
                    var Z = k.getRandomString(20), aa, aT = 'ckf_gallery_' + Z;
                    switch (w) {
                        case r:
                            if (!P(L))return false;
                            aa = C(M, L, aT, P, N);
                            z('#' + B + ' a').colorbox(k.extend({
                                minWidth: '300',
                                minHeight: '200',
                                maxWidth: '95%',
                                maxHeight: '95%',
                                scalePhotos: true,
                                current: K.lang.Gallery.current
                            }, K.config.gallery_config, {
                                rel: aT,
                                group: aT,
                                onClosed: G(L),
                                onOpen: E(N)
                            }, true)).eq(aa).click();
                            break;
                        case s:
                            P = function (bm) {
                                return bm.isImage() || bm.ext == 'swf';
                            };
                            if (!P(L))return false;
                            aa = C(M, L, aT, P, N);
                            O.jQuery('#' + B + ' a').fancybox(k.extend({}, K.config.gallery_config, {
                                onClosed: F,
                                onComplete: E(N),
                                afterClose: G(L),
                                afterShow: E(N)
                            }, true)).eq(aa).click();
                            break;
                        case t:
                            P = function (bm) {
                                return bm.isImage() || bm.ext == 'swf' || bm.ext == 'mov';
                            };
                            if (!P(L))return false;
                            aa = C(M, L, 'prettyPhoto[ckf_gallery_' + Z + ']', P, N);
                            O.jQuery('#' + B + ' a').prettyPhoto(k.extend({}, K.config.gallery_config, {
                                callback: G(L),
                                changepicturecallback: E(N)
                            }, true)).eq(aa).click();
                            break;
                        case u:
                            P = function (bm) {
                                return bm.isImage() || bm.ext == 'swf' || bm.ext == 'mov';
                            };
                            if (!P(L))return false;
                            aa = C(M, L, aT, P, N);
                            O.Shadowbox.qi('#' + B + ' a', k.extend({}, K.config.gallery_config, {
                                gallery: aT,
                                onClose: G(L),
                                onFinish: E(N)
                            }, true));
                            H(A.eG('a').getItem(aa).$);
                            break;
                        case v:
                            if (!P(L))return false;
                            aa = C(M, L, 'lightbox[ckf_gallery_' + Z + ']', P, N);
                            H(A.eG('a').getItem(aa).$);
                            break;
                        default:
                            return false;
                    }
                    return true;
                }
                return false;
            }, bz: J
        });
        function J(K, L) {
            if (K && K.inPopup)return;
            K && K.ld['filesview.filesview'].on('afterRenderFiles', F);
            var M = D(L).getWindow().$;
            if (typeof M.jQuery != 'undefined' && M.jQuery.fn.colorbox) w = r; else if (typeof M.jQuery != 'undefined' && M.jQuery.fn.fancybox) w = s; else if (typeof M.jQuery != 'undefined' && M.jQuery.fn.prettyPhoto) w = t; else if (typeof M.Shadowbox != 'undefined') w = u; else if (typeof M.Prototype != 'undefined' && typeof M.Lightbox != 'undefined') w = v;
            w && (x = 1);
        };
    })();
    n.gallery_autoLoad = true;
    (function () {
        var r = 'ckCsrfToken', s = 40;
        if (typeof String.prototype.trim !== 'function') String.prototype.trim = function () {
            var w = this.replace(/^\s+/, '');
            for (var x = w.length - 1; x >= 0; x--) {
                if (/\S/.test(w.charAt(x))) {
                    w = w.substring(0, x + 1);
                    break;
                }
            }
            return w;
        };
        function t(w) {
            w = w.toLowerCase();
            var x = document.cookie.split(';');
            for (var y = 0; y < x.length; y++) {
                var z = x[y].split('='), A = decodeURIComponent(z[0].trim().toLowerCase()), B = z.length > 1 ? z[1] : '';
                if (A === w)return decodeURIComponent(B);
            }
            return '';
        };
        function u(w, x) {
            document.cookie = encodeURIComponent(w) + '=' + encodeURIComponent(x) + ';path=/';
        };
        function v(w) {
            return k.getRandomString(w);
        };
        a.getCsrfToken = function () {
            var w = t(r);
            if (w.length != s) {
                w = v(s);
                u(r, w);
            }
            return w;
        };
        o.add('csrftokenmanager');
    })();
    (function () {
        function r(x) {
            if (!x || x.type != a.cv || x.getName() != 'form')return [];
            var y = [], z = ['style', 'className'];
            for (var A = 0; A < z.length; A++) {
                var B = z[A], C = x.$.elements.namedItem(B);
                if (C) {
                    var D = new m(C);
                    y.push([D, D.nextSibling]);
                    D.remove();
                }
            }
            return y;
        };
        function s(x, y) {
            if (!x || x.type != a.cv || x.getName() != 'form')return;
            if (y.length > 0)for (var z = y.length - 1; z >= 0; z--) {
                var A = y[z][0], B = y[z][1];
                if (B) A.insertBefore(B); else A.appendTo(x);
            }
        };
        function t(x, y) {
            var z = r(x), A = {}, B = x.$;
            if (!y) {
                A['class'] = B.className || '';
                B.className = '';
            }
            A.inline = B.style.cssText || '';
            if (!y) B.style.cssText = 'position: static; overflow: visible';
            s(z);
            return A;
        };
        function u(x, y) {
            var z = r(x), A = x.$;
            if ('class' in y) A.className = y['class'];
            if ('inline' in y) A.style.cssText = y.inline;
            s(z);
        };
        var v = null, w = null;
        o.add('maximize', {
            bz: function (x) {
                var y = x.lang.Maximize, z = a.oC, A = z.getWindow(), B, C = [0, 0, 0, 0], D = {}, E, F;
                B = a.document.getWindow().$;
                try {
                    B = B.frameElement;
                } catch (H) {
                    B = null;
                }
                B = B && new m(B);
                if (B && !B.getFrameDocument().bH().hasClass('CKFinderFrameWindow')) B = null;
                function G(I) {
                    var J = A.eR();
                    if (!I && B) I = [B];
                    if (I) {
                        for (var K = 0, L = I.length; K < L; K++)I[K].setStyles({
                            width: J.width + 'px',
                            height: J.height + 'px'
                        });
                        x.oW('resize');
                    } else x.resize(J.width, J.height);
                };
                x.bD('maximize', {
                    oD: false, exec: function () {
                        var I = x.document.getWindow().$;
                        if (x.cg.inPopup && (!i && !h.opera || I.top.location.href.match(/ckfinder.html/) || I.top.name == 'CKFinderpopup')) {
                            var I = x.document.getWindow().$.parent;
                            if (this.bu == a.aS) {
                                C[2] = I.screenLeft || I.screenX;
                                C[3] = I.screenTop || I.screenY;
                                I.moveTo(0, 0);
                                if (!w) w = [I.screenLeft || I.screenX, I.screenTop || I.screenY];
                                C[2] -= w[0];
                                C[3] -= w[1];
                                if (!I.outerHeight) {
                                    C[0] = I.document.body.scrollWidth;
                                    C[1] = I.document.body.scrollHeight;
                                    if (!v) {
                                        I.resizeTo(I.screen.availWidth, I.screen.availHeight);
                                        v = [I.screen.availWidth - I.document.body.scrollWidth, I.screen.availHeight - I.document.body.scrollHeight];
                                    }
                                    C[0] += v[0];
                                    C[1] += v[1];
                                } else {
                                    C[0] = I.outerWidth;
                                    C[1] = I.outerHeight;
                                }
                                if (I.resizeTo) I.resizeTo(I.screen.availWidth, I.screen.availHeight); else {
                                    I.outerHeight = I.screen.availHeight;
                                    I.outerWidth = I.screen.availWidth;
                                }
                            } else {
                                if (I.resizeTo) I.resizeTo(C[0], C[1]); else {
                                    I.outerWidth = C[0];
                                    I.outerHeight = C[1];
                                }
                                I.moveTo(C[2], C[3]);
                            }
                        } else {
                            var J = B || x.container;
                            if (this.bu == a.aS) {
                                E = A.hV();
                                var K = J, L;
                                while (K = K.getParent()) {
                                    L = k.getNextNumber();
                                    D[L] = t(K);
                                    K.$.og = L;
                                    K.is('html', 'body') && K.setStyle('overflow', 'hidden');
                                    K.setStyle('z-index', x.config.baseFloatZIndex - 1);
                                }
                                L = k.getNextNumber();
                                D[L] = t(J, true);
                                J.$.og = L;
                                var M = [J], I = J.getDocument().getWindow().$;
                                while (I.frameElement) {
                                    M.push(m.eB(I.frameElement));
                                    I = I.parent;
                                }
                                F = function () {
                                    G(M);
                                };
                                A.on('resize', F);
                                var N = new l(I.document), O = {
                                    overflow: h.webkit ? '' : 'hidden',
                                    width: 0,
                                    height: 0
                                };
                                N.gT().setStyles(O);
                                !h.gecko && N.gT().setStyle('position', 'fixed');
                                N.bH().setStyles(O);
                                i ? setTimeout(function () {
                                        A.$.scrollTo(0, 0);
                                    }, 0) : A.$.scrollTo(0, 0);
                                var P;
                                for (var Q = 0, R = M.length; Q < R; Q++) {
                                    P = M[Q];
                                    P.setStyle('position', 'absolute');
                                    P.$.offsetLeft;
                                    P.setStyles({'z-index': x.config.baseFloatZIndex - 1, left: '0px', top: '0px'});
                                }
                                M[0].addClass('cke_maximized');
                                G(M);
                                var S = M[0].ir();
                                M[0].setStyles({left: -1 * S.x + 'px', top: -1 * S.y + 'px'});
                            } else {
                                A.removeListener('resize', F);
                                var K = J;
                                while (K) {
                                    u(K, D[K.$.og]);
                                    K.$.og = null;
                                    K = K.getParent();
                                }
                                D = {};
                                i ? setTimeout(function () {
                                        A.$.scrollTo(E.x, E.y);
                                    }, 0) : A.$.scrollTo(E.x, E.y);
                                J.removeClass('cke_maximized');
                                if (h.webkit) {
                                    J.setStyle('display', 'inline');
                                    setTimeout(function () {
                                        J.setStyle('display', 'block');
                                    }, 0);
                                }
                                x.oW('resize');
                            }
                        }
                        this.rJ();
                        var T = this.pW[0];
                        if (T) {
                            var U = this.bu == a.aS ? y.maximize : y.minimize, V = x.document.getById(T._.id);
                            V.getChild(1).setHtml(U);
                            V.setAttribute('title', U);
                            V.setAttribute('href', 'javascript:void("' + U + '");');
                        }
                    }
                });
                x.bY.qW('Maximize', {label: y.maximize, command: 'maximize'});
            }
        });
    })();
    (function () {
        var r = {};
        CKFinder.addPlugin('zip', {
            uiReady: function (t) {
                var u = t.lang.Zip;
                CKFinder.dialog.add('compressToFileName', function (v) {
                    var w = v.getSelectedFolder();
                    return {
                        title: v.lang.DestinationFile,
                        minWidth: 270,
                        minHeight: 60,
                        contents: [{
                            id: 'tab1',
                            label: '',
                            title: '',
                            expand: true,
                            style: CKFinder.env.ie7Compat ? 'height:auto' : '',
                            padding: 0,
                            elements: [{
                                id: 'msg',
                                className: 'cke_dialog_error_msg',
                                type: 'html',
                                html: v.lang.FileRename
                            }, {
                                type: 'hbox',
                                widths: ['90%', '10%'],
                                padding: 0,
                                children: [{
                                    type: 'text',
                                    label: '',
                                    id: 'fileName',
                                    'default': w.name,
                                    validate: function () {
                                        if (!this.getValue()) {
                                            v.openMsgDialog('', v.lang.ErrorMsg.FileEmpty);
                                            return false;
                                        }
                                    }
                                }, {
                                    type: 'html', html: '.zip', id: 'fileNameExt', onLoad: function () {
                                        this.getElement().getParent().setStyles({
                                            'vertical-align': 'bottom',
                                            'padding-bottom': '2px'
                                        });
                                    }
                                }]
                            }]
                        }],
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
                    };
                });
                CKFinder.dialog.add('unzipDirExists', function (v) {
                    var w = v.getSelectedFolder(), x = [[v.lang.ManuallyRename, 'manuallyrename']];
                    if (w.acl.fileDelete && w.acl.fileRename && w.acl.folderRename && w.acl.folderDelete) x.push([u.removeAndExtract, 'overwrite'], [u.extractAndOverwrite, 'merge']);
                    return {
                        title: v.lang.ErrorMsg.FolderNameExists,
                        minWidth: 270,
                        minHeight: 60,
                        contents: [{
                            id: 'tab1',
                            label: '',
                            title: '',
                            expand: true,
                            style: CKFinder.env.ie7Compat ? 'height:auto' : '',
                            padding: 0,
                            elements: [{
                                id: 'msg',
                                className: 'cke_dialog_error_msg',
                                type: 'html',
                                html: ''
                            }, {
                                type: 'hbox',
                                className: 'cke_dialog_file_exist_options',
                                children: [{
                                    label: v.lang.common.makeDecision,
                                    type: 'radio',
                                    id: 'option',
                                    'default': 'manuallyrename',
                                    items: x
                                }]
                            }]
                        }],
                        onOk: function () {
                            var y = this, z = y.getValueOf('tab1', 'option');
                            if (z == 'manuallyrename') z = null;
                            r.extractTo(v.getSelectedFile(), z);
                            return true;
                        },
                        onCancel: function () {
                            r.ma(w);
                            return true;
                        },
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
                    };
                });
                CKFinder.dialog.add('unzipFileExists', function (v) {
                    var w = v.getSelectedFolder();
                    return {
                        title: v.lang.FileExistsDlgTitle,
                        minWidth: 350,
                        minHeight: 120,
                        contents: [{
                            id: 'tab1',
                            label: '',
                            title: '',
                            style: CKFinder.env.ie7Compat ? 'height:auto' : '',
                            expand: true,
                            padding: 0,
                            elements: [{
                                id: 'msg',
                                className: 'cke_dialog_error_msg',
                                type: 'html',
                                widths: ['70%', '30%'],
                                html: ''
                            }, {
                                type: 'hbox',
                                className: 'cke_dialog_file_exist_options',
                                children: [{
                                    type: 'radio',
                                    id: 'option',
                                    label: v.lang.common.makeDecision,
                                    'default': 'autorename',
                                    items: [[v.lang.FileAutorename, 'autorename'], [v.lang.FileOverwrite, 'overwrite'], [v.lang.common.skip, 'skip']]
                                }]
                            }, {
                                type: 'hbox',
                                className: 'cke_dialog_remember_decision',
                                children: [{type: 'checkbox', id: 'remember', label: v.lang.common.rememberDecision}]
                            }]
                        }],
                        onCancel: function () {
                            r.ma(w);
                            return true;
                        },
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
                    };
                });
                CKFinder.dialog.add('compressFileExists', function (v) {
                    var w = v.getSelectedFolder(), x = [[v.lang.ManuallyRename, 'manuallyrename']];
                    if (w.acl.fileDelete && w.acl.fileRename) x.push([v.lang.FileAutorename, 'autorename'], [v.lang.FileOverwrite, 'overwrite']);
                    return {
                        title: v.lang.FileExistsDlgTitle,
                        minWidth: 270,
                        minHeight: 60,
                        contents: [{
                            id: 'tab1',
                            label: '',
                            title: '',
                            expand: true,
                            style: CKFinder.env.ie7Compat ? 'height:auto' : '',
                            padding: 0,
                            elements: [{
                                id: 'msg',
                                className: 'cke_dialog_error_msg',
                                type: 'html',
                                html: ''
                            }, {
                                type: 'hbox',
                                className: 'cke_dialog_file_exist_options',
                                children: [{
                                    label: v.lang.common.makeDecision,
                                    type: 'radio',
                                    id: 'option',
                                    'default': 'manuallyrename',
                                    items: x
                                }]
                            }]
                        }],
                        onOk: function () {
                            var y = this, z = y.getValueOf('tab1', 'option');
                            if (z == 'manuallyrename') z = null;
                            r.nX(v.getSelectedFolder(), r.pp.download, z);
                            return true;
                        },
                        onCancel: function () {
                            r.ma(w);
                            return true;
                        },
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
                    };
                });
                t.connector.app.dZ('zip', 112);
                r = {
                    rQ: {iz: /[\\\/:\*\?"<>\|]/},
                    iG: {
                        extractHere: {
                            label: u.extractHereLabel,
                            command: 'ExtractHere',
                            group: 'zip',
                            icon: CKFinder.getPluginPath('zip') + 'images/zip.gif'
                        },
                        extractTo: {
                            label: u.extractToLabel,
                            command: 'ExtractTo',
                            group: 'zip',
                            icon: CKFinder.getPluginPath('zip') + 'images/zip.gif'
                        },
                        downloadZip: {
                            label: u.downloadZipLabel,
                            command: 'DownloadZip',
                            group: 'zip',
                            icon: CKFinder.getPluginPath('zip') + 'images/zip.gif'
                        },
                        compressZip: {
                            label: u.compressZipLabel,
                            command: 'CompressZip',
                            group: 'zip',
                            icon: CKFinder.getPluginPath('zip') + 'images/zip.gif'
                        }
                    },
                    ma: function (v) {
                        v.getChildren(function (w) {
                            v.close();
                            v.showFiles();
                            v.open();
                        }, true);
                    },
                    oc: function (v) {
                        if (!v || !v.length)return t.lang.ErrorMsg.FolderEmpty;
                        if (r.rQ.iz.test(v))return t.lang.ErrorMsg.FolderInvChar;
                        return false;
                    },
                    nI: function (v) {
                        if (!r.filesList[r.currentItem]) {
                            r.extractHere(t.getSelectedFile(), true);
                            return;
                        }
                        var w = [{name: 'skip'}, {name: 'ok'}];
                        if (r.filesList[r.currentItem].options && s(r.filesList[r.currentItem].options, w)) {
                            r.currentItem++;
                            t.openDialog('unzipFileExists', r.nI);
                            return;
                        }
                        v.show();
                        var x = t.lang.ErrorMsg[r.filesList[r.currentItem].type == 'Folder' ? 'FolderExists' : 'FileExists'];
                        x = '<strong>' + x.replace('%s', r.filesList[r.currentItem].name) + '</strong>';
                        v.getContentElement('tab1', 'msg').getElement().setHtml(x);
                        v.on('ok', function (y) {
                            y.removeListener();
                            var z = v.getValueOf('tab1', 'remember'), A = v.getValueOf('tab1', 'option');
                            if (z) {
                                for (var B = 0, C = r.filesList.length; B < C; B++) {
                                    if (!r.filesList[B].options) r.filesList[B].options = A;
                                }
                                r.extractHere(t.getSelectedFile(), true);
                                return;
                            } else {
                                r.filesList[r.currentItem].options = A;
                                r.currentItem++;
                                while (r.currentItem < r.filesList.length) {
                                    if (!r.filesList[r.currentItem].options || r.filesList[r.currentItem].options && r.filesList[r.currentItem].options != 'skip')break;
                                    r.currentItem++;
                                }
                                if (r.currentItem < r.filesList.length) {
                                    setTimeout(function () {
                                        t.openDialog('unzipFileExists', r.nI);
                                    }, 0);
                                    return;
                                } else {
                                    r.extractHere(t.getSelectedFile(), true);
                                    return;
                                }
                            }
                        });
                    },
                    extract: function (v) {
                        var w = {}, x = v.file;
                        if (v.extra) w = v.extra;
                        w.fileName = v.file.name;
                        t.connector.sendCommandPost(v.action, null, w, function (y) {
                            r.filesList = [];
                            if (y.getErrorNumber() == 303) {
                                r.currentItem = 0;
                                var z = y.selectNodes('Connector/Errors/Error'), A = y.selectNodes('Connector/UnzippedFiles/File'), B = 0, C;
                                for (var D = 0, E = z.length; D < E; D++) {
                                    C = 'skip';
                                    if (z[D].getAttribute('code') == 115) {
                                        B = 1;
                                        C = null;
                                    }
                                    r.filesList[D] = {
                                        name: z[D].getAttribute('name'),
                                        options: C,
                                        type: z[D].getAttribute('type'),
                                        code: z[D].getAttribute('code')
                                    };
                                }
                                for (var F = 0, E = A.length; F < E; F++, D++)r.filesList[D] = {
                                    name: A[F].getAttribute('name'),
                                    options: A[F].getAttribute('action'),
                                    type: 'File',
                                    code: 0
                                };
                                if (B) {
                                    t.openDialog('unzipFileExists', r.nI);
                                    return;
                                }
                            } else if (y.checkError())return;
                            var G = y.selectNodes('Connector/FolderExists/Folder');
                            if (G && G.length) {
                                t.openDialog('unzipDirExists', function (J) {
                                    J.show();
                                    var K = t.lang.FolderNameExists;
                                    K = '<strong>' + K.replace('%s', G[0].getAttribute('name')) + '</strong>';
                                    J.getContentElement('tab1', 'msg').getElement().setHtml(K);
                                });
                                return;
                            }
                            var A = y.selectNodes('Connector/UnzippedFiles/File');
                            if (A && A.length) {
                                var H = [];
                                for (var D = 0, I = A.length; D < I; D++) {
                                    if (A[D].getAttribute('action') == 'skip') H.push(A[D].getAttribute('name'));
                                }
                                if (r.filesList)for (var D = 0, I = r.filesList.length; D < I; D++)H.push(r.filesList[D].name);
                                if (H.length) {
                                    t.openSkippedFilesDialog(null, H, u.extractSuccess);
                                    r.ma(t.getSelectedFolder());
                                    return true;
                                }
                            }
                            t.openMsgDialog('OK', u.extractSuccess);
                            r.ma(t.getSelectedFolder());
                            return true;
                        }, x.folder.type, x.folder);
                    },
                    extractHere: function (v, w) {
                        if (w) {
                            var x = false;
                            for (var y = 0, z = r.filesList.length; y < z; y++) {
                                if (r.filesList[y].code == 115 && r.filesList[y].options != 'skip') {
                                    x = true;
                                    w = {};
                                    for (var y = 0, z = r.filesList.length; y < z; y++) {
                                        w['files[' + y + '][name]'] = r.filesList[y].name;
                                        w['files[' + y + '][options]'] = r.filesList[y].options;
                                    }
                                    break;
                                }
                            }
                            if (!x) {
                                var A = [];
                                for (var y = 0, z = r.filesList.length; y < z; y++)A.push(r.filesList[y].name);
                                t.openSkippedFilesDialog(null, A, u.extractSuccess, function () {
                                    r.ma(t.getSelectedFolder());
                                    return true;
                                });
                                return;
                            }
                        }
                        w = w || {};
                        r.extract({action: 'ExtractHere', file: v, extra: w});
                    },
                    extractTo: function (v, w) {
                        if (w) {
                            r.extract({
                                action: 'ExtractTo',
                                file: v,
                                extra: {extractDir: r.extractDir || '/', force: w}
                            });
                            return;
                        }
                        t.openInputDialog(t.lang.DestinationFolder, t.lang.FolderRename, '', function (x) {
                            var y = t.getSelectedFolder(), x = CKFinder.tools.trim(x), z = r.oc(x);
                            if (z) {
                                t.openConfirmDialog('', z, function (A) {
                                    r.extractTo(v, w);
                                });
                                return false;
                            }
                            r.extractDir = x;
                            if (!y.hasChildren) {
                                y.createNewFolder(x);
                                r.extract({action: 'ExtractTo', file: v, extra: {extractDir: x}});
                            } else y.getChildren(function (A) {
                                if (!s(x, A)) r.extract({action: 'ExtractTo', file: v, extra: {extractDir: x}}); else {
                                    t.openDialog('unzipDirExists', function (B) {
                                        B.show();
                                        var C = t.lang.ErrorMsg.FolderExists;
                                        C = '<strong>' + C.replace('%s', x) + '</strong>';
                                        B.getContentElement('tab1', 'msg').getElement().setHtml(C);
                                    });
                                    return;
                                }
                            }, true);
                        });
                    },
                    downloadZip: function (v, w, x) {
                        var y = t.connector.composeUrl('DownloadZip', {FileName: v, ZipName: w}, x.type, x);
                        t.connector.app.ld['filesview.filesview'].tools.downloadFile(new CKFinder.dom.document(t.document), y);
                    },
                    oH: function (v, w) {
                        t.connector.sendCommandPost('CreateZip', null, w, function (x) {
                            if (x.checkError())return;
                            if (w.download) {
                                var y = x.selectSingleNode('Connector/ZipFile');
                                if (y) {
                                    var y = y.getAttribute('name');
                                    return r.downloadZip(y, w.zipName, v);
                                }
                            }
                            r.ma(v);
                        }, v.type, v);
                    },
                    nX: function (v, w, x, y) {
                        var z = {zipName: v.name + '.zip', download: w};
                        if (y)for (var A = 0, B = y.length; A < B; A++) {
                            z['files[' + A + '][name]'] = y[A].name;
                            z['files[' + A + '][type]'] = y[A].folder.type;
                            z['files[' + A + '][folder]'] = y[A].folder.getPath();
                        }
                        if (x) {
                            z = r.pp;
                            z.fileExistsAction = x;
                            return r.oH(v, z);
                        }
                        if (v.isBasket || w) {
                            if (v.isBasket && typeof y === 'undefined') {
                                z.zipName = 'basket.zip';
                                for (var A = 0, B = t.basketFiles.length; A < B; A++) {
                                    z['files[' + A + '][name]'] = t.basketFiles[A].name;
                                    z['files[' + A + '][type]'] = t.basketFiles[A].folder.type;
                                    z['files[' + A + '][folder]'] = t.basketFiles[A].folder.getPath();
                                }
                            }
                            if (v.isBasket) {
                                v = t.folders[1];
                                z.basket = true;
                            }
                            return r.oH(v, z);
                        } else t.openDialog('compressToFileName', function (C) {
                            C.show();
                            C.getContentElement('tab1', 'fileName').getElement().setValue(v.name);
                            C.on('ok', function (D) {
                                D.removeListener();
                                var E = C.getValueOf('tab1', 'fileName');
                                E = CKFinder.tools.trim(E) + '.zip';
                                var F = r.oc(E);
                                if (F) {
                                    t.openConfirmDialog('', F, function (G) {
                                        r.nX(v, w);
                                    });
                                    return false;
                                } else {
                                    z.zipName = E;
                                    v.getFiles(function (G) {
                                        if (s(E, G)) {
                                            r.pp = z;
                                            t.openDialog('compressFileExists', function (H) {
                                                H.show();
                                                var I = t.lang.ErrorMsg.FileExists;
                                                I = '<strong>' + I.replace('%s', E) + '</strong>';
                                                H.getContentElement('tab1', 'msg').getElement().setHtml(I);
                                            });
                                            return false;
                                        } else r.oH(v, z);
                                    }, true);
                                }
                            });
                        });
                    }
                };
                t.addFileContextMenuOption(r.iG.extractHere, function (v, w) {
                    r.extractHere(w);
                }, function (v) {
                    var w = t.getSelectedFolder();
                    if (w.isBasket)return false;
                    var x = t.getSelectedFiles();
                    if (v.ext.toLowerCase() !== 'zip' || t.config.selectMultiple && x.length > 1)return false;
                    return v.folder.acl.fileUpload && v.folder.acl.folderCreate ? true : -1;
                });
                t.addFileContextMenuOption(r.iG.extractTo, function (v, w) {
                    r.extractTo(w);
                }, function (v) {
                    var w = t.getSelectedFolder();
                    if (w.isBasket)return false;
                    var x = t.getSelectedFiles();
                    if (v.ext.toLowerCase() !== 'zip' || t.config.selectMultiple && x.length > 1)return false;
                    return v.folder.acl.fileUpload && v.folder.acl.folderCreate ? true : -1;
                });
                t.addFileContextMenuOption(r.iG.compressZip, function (v, w) {
                    var x = v.getSelectedFiles(), y = v.getSelectedFolder();
                    r.nX(y, false, false, x);
                }, function (v) {
                    var w = t.getSelectedFolder();
                    if (w.isBasket)return false;
                    var x = t.getSelectedFiles();
                    if (!t.config.selectMultiple || x.length < 2)return false;
                    return v.folder.acl.fileUpload && v.folder.acl.folderCreate && w.getResourceType().isExtensionAllowed('zip') ? true : -1;
                });
                t.addFileContextMenuOption(r.iG.downloadZip, function (v, w) {
                    var x = v.getSelectedFiles(), y = v.getSelectedFolder();
                    r.nX(y, true, false, x);
                }, function (v) {
                    var w = t.getSelectedFiles();
                    if (!t.config.selectMultiple || w.length < 2)return false;
                    return v.folder.acl.fileUpload ? true : -1;
                });
                t.addFolderContextMenuOption(r.iG.compressZip, function (v, w) {
                    r.nX(w, false);
                }, function (v) {
                    if (v.isBasket)return false;
                    return v.acl.fileUpload && v.getResourceType().isExtensionAllowed('zip') && (t.files.length || v.hasChildren) ? true : -1;
                });
                t.addFolderContextMenuOption(r.iG.downloadZip, function (v, w) {
                    r.nX(w, true);
                }, function (v) {
                    if (v.isBasket)return v.app.basketFiles.length ? true : -1;
                    return v.acl.fileUpload && (t.files.length || v.hasChildren) ? true : -1;
                });
                t.connector.app.ld['filesview.filesview'].on('beforeContextMenu', function (v) {
                    if (t.getSelectedFiles().length > 1) delete v.data.bj.downloadFile;
                });
            },
            basketToolbar: [['DownloadZip', {
                label: 'downloadZipLabel',
                icon: CKFinder.getPluginPath('zip') + 'images/zip.gif',
                onClick: function (t) {
                    var u = t.getSelectedFolder();
                    u.app.basketFiles.length && r.nX(u, true);
                },
                disableEmpty: true
            }]]
        });
        function s(t, u) {
            for (var v = 0, w = u.length; v < w; v++) {
                if (u[v].name && u[v].name === t)return true;
            }
            return false;
        };
    })();
    a.skins.add('kama', (function () {
        var r = ['images/loaders/16x16.gif', 'images/loaders/32x32.gif', 'images/ckffolder.gif', 'images/ckffolderopened.gif'];
        if (i && h.version < 7) r.push('images/sprites_ie6.png');
        return {
            ls: r,
            application: {css: ['app.css']},
            host: {qx: 1, css: ['host.css']},
            mA: 7,
            kN: 7,
            ps: 1,
            bz: function (s) {
                if (s.config.width && !isNaN(s.config.width)) s.config.width -= 12;
                var t = [], u = '/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';
                if (h.webkit) {
                    u = u.split('}').slice(0, -1);
                    for (var v = 0; v < u.length; v++)u[v] = u[v].split('{');
                }
                function w(z) {
                    var A = z.getHead().append('style');
                    A.setAttribute('id', 'cke_ui_color');
                    A.setAttribute('type', 'text/css');
                    return A;
                };
                function x(z, A, B) {
                    var C, D, E;
                    for (var F = 0; F < z.length; F++) {
                        if (h.webkit) {
                            for (D = 0; D < z[F].$.sheet.rules.length; D++)z[F].$.sheet.removeRule(D);
                            for (D = 0; D < A.length; D++) {
                                E = A[D][1];
                                for (C = 0; C < B.length; C++)E = E.replace(B[C][0], B[C][1]);
                                z[F].$.sheet.addRule(A[D][0], E);
                            }
                        } else {
                            E = A;
                            for (C = 0; C < B.length; C++)E = E.replace(B[C][0], B[C][1]);
                            if (i) z[F].$.styleSheet.cssText = E; else z[F].setHtml(E);
                        }
                    }
                };
                var y = /\$color/g;
                k.extend(s, {
                    uiColor: null, rk: function () {
                        return this.uiColor;
                    }, setUiColor: function (z) {
                        var A, B, C = w(a.oC), D = w(this.document), E = '.cke_' + s.name.replace('.', '\\.'), F = [E + ' .cke_wrapper', E + '_dialog .cke_dialog_contents', E + '_dialog a.cke_dialog_tab', E + '_dialog .cke_dialog_footer'].join(','), G = 'background-color: $color !important;';
                        if (h.webkit) {
                            A = [[F, G]];
                            B = [['body,' + F, G]];
                        } else {
                            A = F + '{' + G + '}';
                            B = 'body,' + F + '{' + G + '}';
                        }
                        return (this.setUiColor = function (H) {
                            var I = [[y, H]];
                            s.uiColor = H;
                            x([C], A, I);
                            x([D], B, I);
                            x(t, u, I);
                        })(z);
                    }
                });
                s.on('menuShow', function (z) {
                    var A = z.data[0], B = A.element.eG('iframe').getItem(0).getFrameDocument();
                    if (!B.getById('cke_ui_color')) {
                        var C = w(B);
                        t.push(C);
                        var D = s.rk();
                        if (D) x([C], u, [[y, D]]);
                    }
                });
                if (s.config.uiColor) s.on('uiReady', function () {
                    s.setUiColor(s.config.uiColor);
                });
            }
        };
    })());
    (function () {
        a.dialog ? r() : a.on('dialogPluginReady', r);
        function r() {
            a.dialog.on('resize', function (s) {
                var t = s.data, u = t.width, v = t.height, w = t.dialog, x = w.bO.contents;
                if (t.skin != 'kama')return;
                x.setStyles({width: u + 'px', height: v + 'px'});
                setTimeout(function () {
                    var y = w.bO.dialog.getChild([0, 0, 0]), z = y.getChild(0), A = y.getChild(2);
                    A.setStyle('width', z.$.offsetWidth + 'px');
                    A = y.getChild(7);
                    A.setStyle('width', z.$.offsetWidth - 28 + 'px');
                    A = y.getChild(4);
                    A.setStyle('height', z.$.offsetHeight - 31 - 14 + 'px');
                    A = y.getChild(5);
                    A.setStyle('height', z.$.offsetHeight - 31 - 14 + 'px');
                }, 100);
            });
        };
    })();
    a.skins.add('v1', (function () {
        var r = ['images/loaders/16x16.gif', 'images/loaders/32x32.gif', 'images/ckffolder.gif', 'images/ckffolderopened.gif'];
        if (i && h.version < 7) r.push('images/sprites_ie6.png');
        return {ls: r, application: {css: ['app.css']}, ps: 1, rv: -8, kN: 0, host: {qx: 1, css: ['host.css']}};
    })());
    (function () {
        a.dialog ? r() : a.on('dialogPluginReady', r);
        function r() {
            a.dialog.on('resize', function (s) {
                var t = s.data, u = t.width, v = t.height, w = t.dialog, x = w.bO.contents;
                if (t.skin != 'v1')return;
                x.setStyles({width: u + 'px', height: v + 'px'});
                setTimeout(function () {
                    var y = w.bO.dialog.getChild([0, 0, 0]), z = y.getChild(0), A = y.getChild(2);
                    A.setStyle('width', z.$.offsetWidth + 'px');
                    A = y.getChild(7);
                    A.setStyle('width', z.$.offsetWidth - 28 + 'px');
                    A = y.getChild(4);
                    A.setStyle('height', z.$.offsetHeight - 31 - 14 + 'px');
                    A = y.getChild(5);
                    A.setStyle('height', z.$.offsetHeight - 31 - 14 + 'px');
                }, 100);
            });
        };
    })();
    (function () {
        function r(t, u, v) {
            var w = t.querySelectorAll(u);
            if (!w)return;
            for (var x = 0; x < w.length; ++x)v.call(w[x]);
        };
        a.skins.add('bootstrap', (function () {
            return {
                application: {css: ['app.css']},
                host: {qx: 1, css: ['host.css']},
                heightAdjust: 50,
                bz: function (t) {
                    t.config.jh = 'png';
                    t.on('appReady', function () {
                        var u = t.document.$, v = u.dir === 'rtl';
                        if (!v) u.querySelector('#toolbar_view .cke_toolbar').classList.add('col-md-10');
                        u.querySelector('.cke_search_box').classList.add('col-md-2', v ? 'pull-left' : 'pull-right');
                        var w = u.querySelector('.cke_search_box input');
                        w.classList.add('form-control');
                        w.setAttribute('placeholder', t.lang.Search.searchPlaceholder + '...');
                    });
                }
            };
        })());
        a.dialog ? s() : a.on('dialogPluginReady', s);
        function s() {
            a.dialog.on('resize', function (t) {
                var u = t.data, v = u.width, w = u.height, x = u.dialog, y = x.bO.contents;
                if (u.skin != 'bootstrap')return;
                y.setStyles({width: v + 'px', height: w + 'px'});
                setTimeout(function () {
                    var z = x.bO.dialog.getChild([0, 0, 0]), A = z.getChild(0), B = z.getChild(2);
                    B.setStyle('width', A.$.offsetWidth + 'px');
                    B = z.getChild(7);
                    B.setStyle('width', A.$.offsetWidth - 28 + 'px');
                    B = z.getChild(4);
                    B.setStyle('height', A.$.offsetHeight - 31 - 14 + 'px');
                    B = z.getChild(5);
                    B.setStyle('height', A.$.offsetHeight - 31 - 14 + 'px');
                    var C = x._.element.$;
                    r(C, 'input[type="text"]', function () {
                        this.classList.add('form-control');
                    });
                    r(C, 'a.cke_dialog_ui_button', function () {
                        var D = this.classList;
                        D.add('btn');
                        if (D.contains('cke_dialog_ui_button_ok')) D.add('btn-success'); else if (D.contains('cke_dialog_ui_button_cancel')) D.add('btn-danger'); else D.add('btn-default');
                    });
                }, 100);
            });
        };
    })();
    a.gc.add('default', (function () {
        return {
            dQ: function (r) {
                var s = r.name, t = r.element, u = r.ff;
                if (!t || u == a.kZ)return;
                r.layout = new a.application.layout(r);
                var v = r.oW('themeSpace', {space: 'head', html: ''}), w = r.oW('themeSpace', {
                    space: 'sidebar',
                    html: ''
                }), x = r.oW('themeSpace', {space: 'mainTop', html: ''}), y = r.oW('themeSpace', {
                    space: 'mainMiddle',
                    html: ''
                }), z = r.oW('themeSpace', {
                    space: 'mainBottom',
                    html: ''
                }), A = r.config.skin.indexOf(','), B = (A == -1 ? r.config.skin : r.config.skin.substr(0, A)) || 'kama', C = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="' + r.lang.LangCode + '" dir="' + r.lang.dir + '">' + '<head>' + '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' + v.html + '</head>' + '<body>' + (h.ie6Compat ? '<div id="ckfinder" role="application">' : '<div id="ckfinder" role="application" style="visibility: hidden">') + '<!-- 1. CKE Skin class. -->' + '<div class="fake_wrapper cke_skin_' + B + '">' + '<!-- 2. High contrast class. -->' + '<div class="fake_wrapper"><!-- Applicable: hc cke_hc -->' + '<!-- 3. Browser class. -->' + '<div class="fake_wrapper ' + h.cssClass + '">' + '<!-- 4. RTL class. -->' + '<div class="fake_wrapper cke_' + (r.lang.dir == 'ltr' || i && h.version < 8 ? 'ltr' : 'rtl') + '"><!-- Applicable: rtl cke_rtl -->' + '<!-- 5. Layout class. -->' + '<div class="fake_wrapper">' + '<div id="ckfinder_view" class="columns_2"><!-- Applicable: columns_1 columns_2 -->' + '<div id="sidebar_container" class="container" role="region"' + (r.config.sidebarWidth ? ' style="width: ' + k.cssLength(r.config.sidebarWidth) + '"' : '') + '>' + '<div id="sidebar_wrapper" class="wrapper">' + w.html + '</div>' + '</div>' + '<div id="main_container" class="container" role="region">' + x.html + y.html + z.html + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</body>' + '</html>';
                a.log('[THEME] DOM flush using document.write');
                r.document.$.write(C);
                function D() {
                    if (h.ie6Compat) r.layout.oG = r.document.getWindow().eR();
                };
                r.cr('themeLoaded');
                r.cr('uiReady', function () {
                    D();
                    r.cr('appReady', function () {
                        D();
                        if (h.ie8) {
                            var E = r.document.$, F;
                            if (E.documentMode) F = E.documentMode; else {
                                F = 5;
                                if (E.compatMode)if (E.compatMode == 'CSS1Compat') F = 7;
                            }
                            if (F < 8) {
                                var G = '<strong style="color: red;">Forced IE compatibility mode! CKFinder may not look as intended.</strong>', H = r.plugins.tools;
                                H.showTool(H.addTool(G));
                            }
                        }
                        if (h.ie6Compat) r.document.getWindow().on('resize', D);
                        r.document.getWindow().on('resize', function () {
                            r.layout.ea.call(r.layout);
                        });
                        var I;

                        function J() {
                            I = I || r.document.getHead().eG('link').getItem(0);
                            var K = 0;
                            if (I)try {
                                if (I.$.sheet && I.$.sheet.cssRules.length > 0) K = 1; else if (I.$.styleSheet && I.$.styleSheet.cssText.length > 0) K = 1; else if (I.$.innerHTML && I.$.innerHTML.length > 0) K = 1;
                            } catch (L) {
                            }
                            if (!K) {
                                window.setTimeout(J, 250);
                                return;
                            }
                            if (h.ie6Compat) {
                                D();
                                r.layout.ea();
                                setTimeout(function () {
                                    r.layout.ea();
                                }, 500);
                            } else {
                                r.layout.ea(true);
                                setTimeout(function () {
                                    r.document.getById('ckfinder').removeStyle('visibility');
                                });
                            }
                            return undefined;
                        };
                        J();
                    });
                });
            }, pu: function (r) {
                var s = k.getNextNumber(), t = m.kE(['<div class="cke_compatibility cke_' + r.name.replace('.', '\\.') + '_dialog cke_skin_', r.gd, '" dir="', r.lang.dir, '" lang="', r.langCode, '"><table class="cke_dialog', ' ' + h.cssClass.replace(/browser/g, 'cke_browser'), ' cke_', r.lang.dir, '" style="position:absolute"><tr><td><div class="%body"><div id="%title#" class="%title"></div><div id="%close_button#" class="%close_button"><span>X</span></div><div id="%tabs#" class="%tabs"></div><table class="%contents"><tr><td id="%contents#" class="%contents"></td></tr></table><div id="%footer#" class="%footer"></div></div><div id="%tl#" class="%tl"></div><div id="%tc#" class="%tc"></div><div id="%tr#" class="%tr"></div><div id="%ml#" class="%ml"></div><div id="%mr#" class="%mr"></div><div id="%bl#" class="%bl"></div><div id="%bc#" class="%bc"></div><div id="%br#" class="%br"></div></td></tr></table>', i ? '' : '<style>.cke_dialog{visibility:hidden;}</style>', '</div>'].join('').replace(/#/g, '_' + s).replace(/%/g, 'cke_dialog_'), a.document), u = t.getChild([0, 0, 0, 0, 0]), v = u.getChild(0), w = u.getChild(1);
                v.unselectable();
                w.unselectable();
                return {
                    element: t,
                    bO: {
                        dialog: t.getChild(0),
                        title: v,
                        close: w,
                        tabs: u.getChild(2),
                        contents: u.getChild([3, 0, 0, 0]),
                        footer: u.getChild(4)
                    }
                };
            }, destroy: function (r) {
                var s = r.container, t = r.ia;
                s && s.remove();
                for (var u = 0; t && u < t.length; u++)t[u].remove();
                if (r.element) {
                    r.ff == a.fc && r.element.remove();
                    delete r.element;
                }
            }
        };
    })());
    a.application.prototype.vU = function (r) {
        var s = '' + r, t = this._[s] || (this._[s] = a.document.getById(s + '_' + this.name));
        return t;
    };
    a.application.prototype.nJ = function (r) {
        var s = /^\d+$/;
        if (s.test(r)) r += 'px';
        var t = this.layout.dV();
        t.setStyle('width', r);
        this.oW('resize');
        this.layout.ea();
    };
    a.application.prototype.resize = function (r, s) {
        this.element.getChild(0).setStyle('height', s + 'px');
        this.element.getChild(0).setStyle('width', r + 'px');
    };
    (function () {
        var r = "\x3c\144\151\166\040\x63\x6c\x61\163\x73\075\x27\166\x69\145\x77\x20\x74\x6f\157\154\137\160\x61\156\x65\x6c\x27\x20\x73\164\x79\154\145\x3d\x27\160\141\144\x64\x69\x6e\147\x3a\x32\160\170\073\x64\151\x73\160\x6c\141\171\072\x62\x6c\x6f\143\153\040\041\151\x6d\x70\x6f\162\x74\141\x6e\164\073\x70\x6f\163\151\x74\151\157\x6e\x3a\x73\164\x61\x74\x69\x63\040\041\151\155\160\157\162\164\x61\156\x74\x3b\143\x6f\x6c\157\162\x3a\142\154\x61\x63\x6b\x20\041\151\x6d\160\157\162\x74\x61\x6e\x74\073\x62\x61\143\153\x67\x72\157\x75\156\x64\x2d\143\157\154\157\162\072\167\150\151\x74\145\040\x21\151\155\x70\x6f\x72\x74\x61\x6e\164\x3b\x27\076", s = "\x3c\x2f\144\151\166\x3e", t = "\x54\150\151\163\040\x69\163\x20\164\x68\145\040\x44\105\x4d\x4f\040\166\x65\x72\x73\x69\157\156\x20\157\146\040\103\113\x46\151\x6e\144\145\x72\056\040\120\154\x65\141\163\145\040\166\x69\x73\x69\x74\x20\164\150\145\040\x3c\x61\x20\150\162\x65\x66\x3d\x27\150\164\x74\x70\x3a\x2f\x2f\x63\x6b\163\157\x75\x72\x63\x65\056\143\x6f\x6d\057\143\153\146\151\x6e\144\x65\162\x27\x20\164\141\162\x67\x65\x74\x3d\047\x5f\x62\154\141\x6e\x6b\x27\x3e\x43\x4b\106\151\156\144\x65\x72\040\x77\145\x62\040\163\151\x74\x65\x3c\x2f\x61\x3e\x20\164\157\040\x6f\x62\x74\141\x69\x6e\x20\141\040\166\x61\154\151\144\040\x6c\151\x63\x65\156\163\x65\x2e", u = "\x43\113\x46\151\x6e\x64\145\162\x20\104\145\166\x65\x6c\157\160\145\x72\040\x4c\x69\143\x65\156\x73\x65\074\142\x72\057\076\114\151\143\145\x6e\x73\145\144\040\164\157\072\040", v = r + t + s, w = r + u + s;

        function x(z, A, B) {
            var C = 0, D = 0;
            for (var E = 0; E < z.$.parentNode.childNodes.length; E++) {
                var F = z.$.parentNode.childNodes[E];
                if (F.nodeType == 1) {
                    var G = F == z.$;
                    if (!F.offsetHeight && !G)continue;
                    D++;
                    if (!G) C += F.offsetHeight;
                }
            }
            var H = z.$.offsetHeight - z.$.clientHeight, I = (D - 1) * A;
            if (h.ie6Compat && !h.ie8 && !h.ie7Compat) I += A * 2;
            var J = i ? z.$.parentNode.parentNode.parentNode.offsetHeight : z.$.parentNode.offsetHeight, K = J - H - C - (I || 0);
            if (B) K += B;
            try {
                z.setStyle('height', K + 'px');
            } catch (L) {
            }
        };
        function y(z) {
            return a.bs.substr(z * 9 % (2 << 4), 1);
        };
        a.application.layout = function (z) {
            this.app = v.length ? z : null;
            this.jB = null;
        };
        a.application.layout.prototype = {
            ea: function (z) {
                if (this.jB)return;
                this.jB = k.setTimeout(function () {
                    a.log('[THEME] Repainting layout');
                    var A = a.bs.indexOf(a.bF.substr(1, 1)) % 5, B = [a.bF.substr(8, 1), a.bF.substr(6, 1)], C = a.bF && a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1), D = !!a.ed && B[1] != y(a.ed.length + a.bs.indexOf(B[0]));
                    if (a.bF && 1 == A && a.lS(window.top[a.nd + "\143\141\164\151\157\156"][a.jG + "\163\x74"]) != a.lS(a.ed) || A == 4 || C) {
                        var E = this.dV().getChild(0).getChildren(), F = 0;
                        for (var G = 0; G < E.count(); G++) {
                            if (E.getItem(G).rd("\x70\x6f\163\x69\x74\x69\157\x6e") == "\x73\x74\141\164\x69\x63") F = 1;
                        }
                        if (!F) {
                            if (this.app.gd == 'bootstrap') {
                                var H = "\x3c\x64\151\x76\x20\143\x6c\x61\x73\x73\x3d\x27\166\x69\145\167\x20\164\157\157\154\137\160\141\x6e\145\x6c\047\040\x73\x74\x79\154\145\075\047\x64\151\x73\x70\154\141\x79\x3a\x62\x6c\157\143\153\x20\x21\x69\x6d\160\157\x72\164\x61\x6e\164\x3b\160\x6f\163\x69\x74\151\x6f\x6e\072\x73\x74\x61\164\151\143\040\x21\x69\x6d\160\157\x72\164\x61\x6e\x74\x3b\x63\x6f\x6c\157\x72\x3a\043\x33\x31\x37\x30\x38\x66\x20\041\151\155\x70\157\x72\x74\x61\156\x74\073\x62\x61\x63\x6b\147\162\157\165\x6e\144\055\143\157\x6c\x6f\x72\x3a\x23\144\x39\145\144\146\x37\x20\x21\x69\x6d\x70\157\x72\x74\141\156\x74\073\146\x6f\156\164\x2d\x73\151\172\x65\x3a\x20\061\063\x70\170\073\040\x70\141\x64\144\x69\156\147\072\040\x35\x70\170\073\x20\155\141\162\147\x69\x6e\072\065\160\170\x3b\x62\157\162\144\x65\162\055\x72\141\144\x69\x75\x73\x3a\x34\160\x78\x3b\047\x3e";
                                v = H + t + s;
                                w = H + u + s;
                            }
                            this.dV().getChild(0).appendHtml(C || D || A != 4 ? v : w + "\x3c\x62\076" + k.htmlEncode(a.ed) + "\074\057\x62\076\x3c\057\144\x69\x76\x3e");
                        }
                    }
                    var I = this.pn(), J = this.pS(), K = a.skins.loaded[this.app.gd];
                    if (K.ps && i && h.ie6Compat && !h.ie8) {
                        var L = this.mB(), M = this.dV(), N = 3 * K.kN, O = K.rv ? K.rv : 0, P = this.oG.width - M.$.offsetWidth - N + O;
                        L.setStyle('width', P + 'px');
                    }
                    if (I) x(I, K.mA, K.heightAdjust);
                    if (J) x(J, K.kN);
                    this.jB = null;
                    z = false;
                    this.app.oW('afterRepaintLayout');
                    if (h.ie6Compat) k.setTimeout(function () {
                        this.app.element.$.style.cssText += '';
                    }, 0, this);
                }, z === true ? 0 : 500, this);
            }, dV: function () {
                var z = this;
                if (!z.kS) z.kS = z.app.document.getById('sidebar_container');
                return z.kS;
            }, mB: function () {
                var z = this;
                if (!z.lb) z.lb = z.app.document.getById('main_container');
                return z.lb;
            }, pS: function () {
                var z = this;
                if (typeof z.kK === 'undefined') z.kK = z.app.document.getById('folders_view');
                return z.kK;
            }, pn: function () {
                var z = this;
                if (typeof z.kD === 'undefined') z.kD = z.app.document.getById('files_view');
                return z.kD;
            }
        };
    })();
})();